to illustrate it here a report of one file:reporting all LAS header entries:file signature: 'LASF'file source ID: 43global_encoding: 0project ID GUID data 1-4: 00000000-0000-0000-0000-000000000000version major.minor: 1.2system identifier: 'Q560-'generating software: 'Milan Merge_las_gkw V101216'file creation day/year: 138/2017header size: 227offset to point data: 447number var. length records: 2point data format: 1point data record length: 28number of point records: 8678422number of points by return: 7791298 789112 88737 8599 676scale factor x y z: 0.001 0.001 0.001offset x y z: 675791.17799999996 7462655.7220000001 0min x y z: 675791.178 7462655.722 -752.603max x y z: 681781.978 7466013.133 679.280variable length header record 1 of 2:reserved 43707user ID 'LASF_Projection'record ID 34735length after header 88description 'Georeferencing Information'GeoKeyDirectoryTag version 1.1.0 number of keys 10key 1024 tiff_tag_location 0 count 1 value_offset 1 - GTModelTypeGeoKey: ModelTypeProjectedkey 2048 tiff_tag_location 0 count 1 value_offset 4326 - GeographicTypeGeoKey: GCS_WGS_84key 2054 tiff_tag_location 0 count 1 value_offset 9102 - GeogAngularUnitsGeoKey: Angular_Degreekey 2056 tiff_tag_location 0 count 1 value_offset 7030 - GeogEllipsoidGeoKey: Ellipse_WGS_84key 2057 tiff_tag_location 34736 count 1 value_offset 0 - GeogSemiMajorAxisGeoKey: 6378137key 2058 tiff_tag_location 34736 count 1 value_offset 1 - GeogSemiMinorAxisGeoKey: 6356752.314key 2059 tiff_tag_location 34736 count 1 value_offset 2 - GeogInvFlatteningGeoKey: 298.2572236key 3072 tiff_tag_location 0 count 1 value_offset 32723 - ProjectedCSTypeGeoKey: WGS 84 / UTM 23Skey 3076 tiff_tag_location 0 count 1 value_offset 9001 - ProjLinearUnitsGeoKey: Linear_Meterkey 4099 tiff_tag_location 0 count 1 value_offset 9001 - VerticalUnitsGeoKey: Linear_Metervariable length header record 2 of 2:reserved 43707user ID 'LASF_Projection'record ID 34736length after header 24description 'Double Param Array'GeoDoubleParamsTag (number of doubles 3)6.37814e+006 6.35675e+006 298.257reporting minimum and maximum for all LAS point record entries ...... processed 1000000 points ...... processed 2000000 points ...... processed 3000000 points ...... processed 4000000 points ...... processed 5000000 points ...... processed 6000000 points ...... processed 7000000 points ...... processed 8000000 points ...X 0 5990800Y 0 3357411Z -752603 679280intensity 6 15130return_number 1 7number_of_returns 1 7edge_of_flight_line 0 1scan_direction_flag 0 0classification 1 1scan_angle_rank 60 120user_data 0 0point_source_ID 43 43gps_time 498077.394337 498259.679367number of first returns: 7791298number of intermediate returns: 98012number of last returns: 7791298number of single returns: 7002186covered area in square meters/kilometers: 4470280/4.47point density: all returns 1.94 last only 1.74 (per square meter)spacing: all returns 0.72 last only 0.76 (in meters)WARNING: for return 5 real number of points by return (632) is different from header entry (676).WARNING: there are 41 points with return number 6WARNING: there are 3 points with return number 7overview over number of returns of given pulse: 7002186 1400750 240414 31868 2960 222 22histogram of classification of points:8678422 unclassified (1)
scan angle histogram with bin size 1bin 60 has 52232bin 61 has 143380bin 62 has 161768bin 63 has 147592bin 64 has 148570bin 65 has 148823bin 66 has 147594bin 67 has 147718bin 68 has 148834bin 69 has 149323bin 70 has 158333bin 71 has 150652bin 72 has 146930bin 73 has 144800bin 74 has 145827bin 75 has 144114bin 76 has 143741bin 77 has 144571bin 78 has 144332bin 79 has 157433bin 80 has 144921bin 81 has 144391bin 82 has 143360bin 83 has 142726bin 84 has 141937bin 85 has 142202bin 86 has 143177bin 87 has 153145bin 88 has 148182bin 89 has 145418bin 90 has 145475bin 91 has 144765bin 92 has 143902bin 93 has 143669bin 94 has 144267bin 95 has 143935bin 96 has 156359bin 97 has 142423bin 98 has 142065bin 99 has 142727bin 100 has 141991bin 101 has 142097bin 102 has 142333bin 103 has 141646bin 104 has 151451bin 105 has 145907bin 106 has 143151bin 107 has 143022bin 108 has 142918bin 109 has 142063bin 110 has 142237bin 111 has 141660bin 112 has 141300bin 113 has 154034bin 114 has 140831bin 115 has 140323bin 116 has 139738bin 117 has 138069bin 118 has 136071bin 119 has 131631bin 120 has 60336average scan angle 89.7026 for 8678422 element(s)
The scan angle rank in LAS files represent the scan angle from nadir, where 0 means nadir direction (see [1]). So depending on the orientation of the aircraft you may end up with angles that are beyond the sensor max values.
Did I got it right?
Hello,
I believe that there is an enormous amount of LiDAR out there where the scan angle rank (and not also the scan angle) is in local scanner coordinates, which is also nice to have as this information allows to easily clip those parts of the LiDAR shot by the moments of the mirror movement when it was about to turn around (the less precise and unnecessarily dense parts of an oscillating mirror systems). Maybe we could use a bit of the global encoding bit mask to specify whether local or roll-compensated angles are stored. That would make it easy to fix those Exabytes of existing LAS / LAZ files that have it one way or the other (just flip the bit to the right state).
Regards,
Martin
On Wed, Nov 8, 2017 at 5:55 PM, Evon Silvia <esi...@quantumspatial.com> wrote:
You're correct on #1 but not #2. The Scan Angle Rank should be roll-compensated such that nadir is always zero. In addition, only the cross-track component of the scanner angle is to be included – any forward, backward, or pitch angles should be removed in order to be compliant. In other words, if you have a 2D plane stretching vertically from nadir (as defined by gravity) and horizontally along the wing, the Scan Angle Rank is the angle, from nadir, measured in that plane. It takes some fancy trig to convert back and forth, but it's not so bad as long as you have the SBETs.
Internally, at QSI we discuss the differences as the following:
- True nadir angle - angular offset from true nadir (as defined by gravity) to the pulse vector
- Cross-track nadir angle - component of the true nadir angle in a 2D plane along the aircraft wing - this is the Scan Angle Rank
- Along-track nadir angle - component of the true nadir angle in a 2D plane along the aircraft nose - this is explicitly excluded from the Scan Angle Rank
- Scanner angle - angular offset from the scanner's nadir, regardless of its actual orientation in real space - unclear whether this would be true, cross-track, or along-track
- Palmer angle - I'm a little unclear on this, but I believe it to be the same as along-track nadir angle.
There is currently no formal way to include the along-track component of the nadir angle, but of course that could be done using extrabytes in LAS 1.4. This has been registered with the LWG as a desired addition to the LAS spec.
Since this is a common question (and one I asked a couple years ago), I believe it to be worthwhile for the LWG to publish some clarification on the issue.
Evon
-- Evon Silvia PLS QSI Solutions DeveloperASPRS LAS Working Group Chair Quantum Spatial517 SW 2nd Street, Suite 400, Corvallis, OR 97333 P: (541) 452-8502 E: esi...@quantumspatial.com