Excellent, that is the way to do it! Thanks
On Wed, Dec 27, 2017 at 11:14 PM, Vaclav Petras <[email protected]> wrote: > [cc'ing the list] > > One way to do the spatially variable shift is to do what I suggested > earlier, but instead of the last step (computing average), interpolate a > surface from the differences at each point using, e.g., v.surf.rst with > zcolumn option set to the difference column computed earlier. For the > average, the assumption was that the shift is everywhere the same. Here, > the assumption is that you can interpolate in between the points, i.e. that > the interpolated values are meaningful. This assumption might be broken > e.g. when some abrupt surface change influenced the vertical shift of the > lidar points in a specific area/around certain GPS point (unlikely case). > > To actually shift the data, you need to either do the calculation in the > attribute table (using the aforementioned modules such as v.db.update) or > more simply, and likely more efficiently, apply the shift to a raster with > binned elevations from r.in.lidar using r.mapcalc (same expression as > before, just with a raster map name instead of a constant). > > On Wed, Dec 27, 2017 at 5:22 PM, Shane Carey <[email protected]> wrote: > >> Oh super Vaclav, is there a way of doing a spatially variable shift or >> can you only do a block shift? >> >> Thanks for your help :-) >> >> On Wed, Dec 27, 2017 at 4:42 PM, Vaclav Petras <[email protected]> >> wrote: >> >>> On Tue, Dec 19, 2017 at 3:29 AM, Shane Carey <[email protected]> >>> wrote: >>> >>>> >>>> I have some LiDAR data that was not levelled properly and I was >>>> wondering does anybody know of a way of levelling the las files to gps >>>> points? >>>> >>>> >>> Hi, >>> >>> if the issue is really just vertical (which is usually the case), you >>> can use v.transform zshift to shift by the given value. For rasters, e.g. >>> DEM based on binning the lidar points with r.in.lidar, you can use >>> r.mapcalc to shift it (e.g. expression "new = old + 2"). >>> >>> The shift can be determined by binning (or even interpolating) the >>> points, followed by querying raster using the GPS points as a vector using >>> v.what.rast, and then by computing the difference using v.db.addcolumn and >>> v.db.update. Finally, you can average the difference using v.db.univar. One >>> (average) values will be usually good enough for lidar point cloud, for UAV >>> point cloud, spatially variable shift might be needed. >>> >>> Vaclav >>> >>> -- Le gach dea ghui, *Shane Carey* *GIS and Data Solutions Consultant*
_______________________________________________ grass-user mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/grass-user
