Changes between Initial Version and Version 1 of Processing/LIDARDEMs


Ignore:
Timestamp:
Apr 8, 2008, 6:32:12 PM (16 years ago)
Author:
benj
Comment:

Created

Legend:

Unmodified
Added
Removed
Modified
  • Processing/LIDARDEMs

    v1 v1  
     1== Creation of DEMs from LIDAR point clouds ==
     2
     3This guide assumes you have a LIDAR dataset comprising a number of files containing LIDAR lines of the following format:
     4{{{
     5217755.001130 30563577.97 4513423.12 1293.23   178 30563577.96 4513423.12 1293.28   178
     6time(gps?)(last pulse) ZZeasting northing height(m) pulse_time? (first pulse) ZZeasting northing height(m) pulse_time?
     7}}}
     8
     91. Merge files and strip off unnecessary UTM zone number by running trim_lidar.sh in the directory containing the lidar files:
     10Usage: trim_lidar.sh output_file
     11
     122. Generate a histogram for the lidar data to determine min/max reasonable data values by running lidar_histogram.py:
     13Usage: python lidar_histogram.py input_file
     14
     15This generates a 5x log histogram (ie it's a histogram of the base-10 log of the lidar values binned into 10m bins, multiplied by 5 to scale). If there are a small number of low or high values in the histogram then decide on a scaling cutoff. eg:
     16
     17{{{
     1820:
     1940: #################
     2050: #############################
     2160: #############################
     2270: ##############################
     2380: ##############################
     2490: ###############################
     25100: ###############################
     26110: ###############################
     27120: ################################
     28130: ################################
     29140: ###############################
     30150: #############################
     31160: ############################
     32170: ############################
     33180: ###########################
     34190: ###########################
     35200: ##########################
     36210: #######################
     37220: ###################
     38230: ##############
     39590: #####
     40600: ######
     41610: ######
     42620: ####
     43}}}
     44
     45In the given example, there are a very few values between 20-30m at the bottom end, and a big gap at the top end before a small number of values above 590m (nothing between 240m and 590m). So it would be sensible to pick 30m as a minimum cutoff and 250m as a maximum.
     46
     473. Open GRASS, select (or create) an appropriate UTM/WGS84 location and set the region appropriately for the dataset - easiest way is to look at the start of the trimmed lidar data file for the starting co-ordinates of the first line, set an approximate region from there, view the map in GRASS and then adjust the region appropriately.
     48
     494. Read in the trimmed lidar file using r.in.xyz:
     50{{{
     51r.in.xyz input=<trimmed_lidar_file> output=<lidar_basemap> x=2 y=3 z=4 fs=" " zrange=<min_cutoff>,<max_cutoff>
     52}}}
     53
     545. Interpolate gaps in the map using r.fillnulls:
     55{{{
     56r.fillnulls input=<lidar_basemap> output=<lidar_interp_map>
     57}}}
     58
     596. Generate an ASCII DEM as per [wiki:Processing/NextMapDEMs Creation of DEMs from NextMap data]:
     60{{{
     61r.out.ascii input=<lidar_interp_map> output=lidar.dem null=0
     62}}}