Opened 9 years ago
Closed 8 years ago
#2932 closed defect (fixed)
z values read instead of intensity in r.in.lidar
Reported by: | dnewcomb | Owned by: | wenzeslaus |
---|---|---|---|
Priority: | normal | Milestone: | 7.2.0 |
Component: | Raster | Version: | svn-trunk |
Keywords: | r.in.lidar, intensity, lidar | Cc: | |
CPU: | x86-64 | Platform: | Linux |
Description
The following command:
r.in.lidar -o -i -d --overwrite input=/data1/lidar_test/LA_37_20960803_20150430.las output=803_20ft_ground_intensity base_raster=D05_37_20960803_20141231@PERMANENT method=mean zrange=-10,0 class_filter=1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18
Gives me a grid with values with negative numbers. LiDAR intensities are always positive, so the mean values should also be positive. Since I have only included Z values less in elevation than the ground surface, I assume the values are from the Z coordinates.
Change History (8)
comment:1 by , 9 years ago
comment:2 by , 9 years ago
I think in this case the value of the increased functionality justifies the increase in complexity. It was my (mistaken) understanding that you could use the base raster and Z values to filter for the points you want to analyse , then depending on whether the -i flag was set or not you either the run the statistics on the Z values or run the statistics on the intensity values.
This would allow you to look at the mean intensities of the points within half a meter above and below the base raster surface or get the mean intensities of the top 3 meters of the canopy. One could even acquire intensity statistics in 2m horizontal sections of the canopy.
My apologies in not communicating properly
comment:3 by , 9 years ago
Sorry to take so long to revisit this. The implementation that makes most sense to me requires the presence of a base raster. Adding the -j flag you suggested above might be the best way to go.
comment:5 by , 9 years ago
New proposed interface after discussion with dnewcomb at Code Sprint at FOSS4G NA:
-j
- first do filtering on Z, then use intensity for statistics- use case: intensity stats between 0.5 and 2 meters above the ground
intensity_scale
- scale intensity without using the-i
flag- use case: unifying datasets with different intensities when using
-j
flag
- use case: unifying datasets with different intensities when using
intensity_range
- limit range of used intensities without using the-i
flag- use case: filter out obvious outliers of intensities when using
-j
flag
- use case: filter out obvious outliers of intensities when using
comment:6 by , 8 years ago
Component: | Default → Raster |
---|---|
Keywords: | r.in.lidar intensity lidar added |
Owner: | changed from | to
Status: | new → assigned |
I did the proposed changes (-j
, intensity_scale
, intensity_range
) in r68478. We can close this after some more testing.
comment:7 by , 8 years ago
dnewcomb tested this, so closing, although the current test suite does not cover this.
comment:8 by , 8 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Just to be clear about the branching, it is in 7.2:
The current implementation of
-i
uses intensity instead of z from the beginning and applies it for all subsequent operations:Thus both
zrange
andbase_raster
are working with intensity. Is this the behavior you observe?I think it does not make much sense and
zrange
andbase_raster
always using z is more expected and useful behavior. This raises two questions.Does it make sense to have
intensity_range
orirange
andintensity_scale
?Is it OK to make this change when it is in fact changing behavior? Is the previous behavior simply a bug, so we can just changed it? We are talking about
zrange
andzscale
(base_raster
is 7.1 only). MarkusN added the intensity in r61480 with the aforementioned comment allow for scaling of intensity below. Another flag (-j
"stats on intensity, filters on z") or even and option (values=z|intensity|combined
) can implement this in a backward compatible way for the price of complicating the interface and the code.