Code Monkey home page Code Monkey logo

lidar-3d-urban-forest-mapping's People

Contributors

markusmnzngr avatar ssujit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

lidar-3d-urban-forest-mapping's Issues

qhull input error: input is less than 3-dimensional since it has the same x coordinate

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:

  • filter my point cloud with vegetation and ground
  • Create a canopy height model(CHM)
  • Start at the part of the individual tree segmentation

On some area, the process with my data filtered on vegetation works perfectly.
qgis_vector_final

I even manage to create CityGML with your FME script, and display them on a web page
web2
web3

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:

  • Use raster crowns_mcws_grid to find area on my point cloud where there are not enough points
  • Use vector mcws_segments_poly to get the number of points of my point cloud that are inside each MultiPolygon

At 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.

cc_probleme_point_seul_couronne

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

Using LiDAR Classification of Vegetation instead of NDVI and "Gridded building roof heights" ?

Hi i read your article, and tried your process with my data on a little area.

Data used

I have a LiDAR with a density of 20 pts/m².

lidar_classification
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"

zone_1
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.

qgis_ndvi
NDVI raster displayed in QGIS

Results

I managed to get good results. So thanks a lot for your process.

qgis_results
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

lidar_results
Picture on top is the output lidar of your process with RGB displayed, and the picture on the bottom shows the dimension Classification of the LiDAR where Yellow is Vegetation(5) and Orange is Building(6)

Possible improvement ?

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 :

  • using the Gridded building roof heights and
  • using NDVI.

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)

issues_tree
The areas in yellow are where trees are false.

Crowns covers area where all the points are classified as Building(6)

issues_crown_building
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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.