tiff file from lasgrid output to, does not have a CRS

51 views
Skip to first unread message

Eyal

unread,
Mar 14, 2026, 11:53:45 AM (3 days ago) Mar 14
to LAStools - efficient tools for LiDAR processing
Hi all,
I am very new to Lastools.

I have been able to make my way successfully working with point clouds.
For example, from the original point cloud, I first classified the ground points and then thinned them. The CRS was preserved through these steps.

However, when I exported the ground class points using lasgrid64 as a TIF file, the output had no CRS.

Command:
lasgrid64 -i lasthin64-percentile-40.las -o lasgrid64-step-1_cmd.tif -v -step 1

As can be seen from the output below,  it seems that the lasgrid did in fact detect that there is a CRS.
Output:
LAStools lasgrid (by in...@rapidlasso.de) version 260311 (academic)
ncols was unspecified. set to 206.
nrows was unspecified. set to 163.
WKT: compound CS detected
reading wkt1 [compound]
gridding points onto 206 by 163 grid (spacing = 1.00 units)
gridded 31130 points onto 206 by 163 grid (spacing = 1.00 units)
took 0.007 sec. now outputting the grid ...
took 0.005 sec. done with 'lasgrid64-step-1_cmd.tif'.

Thanks in advance for the help, I am sure I am missing something obvious.

Thanks


Jochen Rapidlasso

unread,
Mar 16, 2026, 11:43:57 AM (yesterday) Mar 16
to LAStools - efficient tools for LiDAR processing
Hi Eyal,
thanks for using LAStools!
We did some tests about your issue but can not confirm the issue.

First we raster without any CRS information in our sample input file:
    lasgrid64 -i lake.laz -o tmp1.tif -v -step 1
We check the result using our tool geotiffinfo:
    geotiffinfo64 -i tmp1.tif
and we see, there is not CRS in the target:
File [tmp1.tif]:
TIFF Directory at offset 0x1959c (103836)
  Image Width: 268 Image Length: 258
  Bits/Sample: 32
  Sample Format: IEEE floating point
  Compression Scheme: LZW
  Photometric Interpretation: min-is-black
  Samples/Pixel: 1
  Rows/Strip: 20
  Planar Configuration: single image plane
  Software: LAStools is a product of rapidlasso GmbH, Germany
  Artist: created by LAStools (c) in...@rapidlasso.de
  GeoPixelScale: 1.000000,1.000000,0.000000
  GeoTiePoints: 0.000000,0.000000,0.000000,476941.000000,4366727.000000,0.000000
  GDALNoDataValue: -9999

Now we add a CRS to the sample file and try again:
    las2las64 -i lake.laz -o tmp1.laz -proj_epsg 6391 6349
    lasinfo64 -i tmp1.laz
lasinfo tells about the compound CRS:
    WKT OGC COORDINATE SYSTEM:
    COMPD_CS["NAD83(2011) + NAVD88 height",GEOGCS["NAD83(2011)",DATUM["NAD83_National_Spatial_Reference_System_2011",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","1116"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","6318"]],VERT_CS["NAVD88 height",VERT_DATUM["North American Vertical Datum 1988",2005,AUTHORITY["EPSG","5103"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Gravity-related height",UP],AUTHORITY["EPSG","5703"]],AUTHORITY["EPSG","6349"]]

Again we use lasgrid to raster the point cloud:
    lasgrid64 -i tmp1.laz -o tmp1.tif -v -step 1
and check the result:
    geotiffinfo64 -i tmp1.tif

TIFF Directory at offset 0x10 (16)
  Image Width: 1 Image Length: 1
  Bits/Sample: 32
  Sample Format: IEEE floating point
  Compression Scheme: LZW
  Photometric Interpretation: min-is-black
  Samples/Pixel: 1
  Rows/Strip: 20
  Planar Configuration: single image plane
  Software: LAStools is a product of rapidlasso GmbH, Germany
  Artist: created by LAStools (c) in...@rapidlasso.de
  GeoPixelScale: 1.000000,1.000000,1.000000
  GeoTiePoints: 0.000000,0.000000,0.000000,25.000000,-88.000000,0.000000
  GeoKeyDirectory: 1,1,1,12,1024,0,1,2,1025,0,1,1,1026,34737,35,0,2048,0,1,4326,2049,34737,7,35,2052,0,1,9001,2056,0,1,7030,3072,0,1,4326,3073,34737,19,42,3076,0,1,9000,4096,0,1,5703,4099,0,1,9001
  GeoASCIIParams: longitude/latitude + NAVD88 height|WGS-84|longitude/latitude|
  GDALNoDataValue: -9999
  GeoKeyDirectory details (12 entries):
KeyID   Loc Cnt Value: KeyDesc = Value
 1024     0   1     2: GTModelTypeGeoKey = ModelTypeGeographic
 1025     0   1     1: GTRasterTypeGeoKey = RasterPixelIsArea
 1026 34737  35     0: GTCitationGeoKey = longitude/latitude + NAVD88 height
 2048     0   1  4326: GeographicTypeGeoKey = GCS_WGS_84
 2049 34737   7    35: GeogCitationGeoKey = WGS-84
 2052     0   1  9001: GeogLinearUnitsGeoKey = Linear_Meter
 2056     0   1  7030: GeogEllipsoidGeoKey = Ellipse_WGS_84
 3072     0   1  4326: ProjectedCSTypeGeoKey = longitude/latitude
 3073 34737  19    42: PCSCitationGeoKey = longitude/latitude
 3076     0   1  9000: ProjLinearUnitsGeoKey = look-up for 9000 not implemented
 4096     0   1  5703: VerticalCSTypeGeoKey = NAVD88 height (Reserved EPSG)
 4099     0   1  9001: VerticalUnitsGeoKey = Linear_Meter

The target TIFF contains a GeoKeyDirectory entry with valid values.
Please check your result using geotiffinfo. If the result is not like you expect please provide a small part (las2las64 -i ... -stop_at_point 10) of your input file and what you expect as output.

Cheers,

Jochen @rapidlasso

Eyal

unread,
Mar 16, 2026, 1:15:10 PM (yesterday) Mar 16
to last...@googlegroups.com
Hi Jochen,
Interesting example. 
The LAS.file definitely has a CRS:
\LiDAR_test\SH_folder_nosnow> D:\Geodata\LAStools\bin\lasinfo64 -i uaf_point_cloud_25_10_15_crop_lasground_new64-step-2_lasthin64-percentile-40.las
lasinfo (260311) report for 'uaf_point_cloud_25_10_15_crop_lasground_new64-step-2_lasthin64-percentile-40.las'
reporting all LAS header entries:
  file signature:             'LASF'
  file source ID:             0
  global_encoding:            17
  project ID GUID data 1-4:   00000000-0000-0000-0000-000000000000
  version major.minor:        1.4
  system identifier:          'LAStools (c) by rapidlasso GmbH'
  generating software:        'lasthin64 260311-sci'
  file creation day/year:     56/2026
  header size:                375
  offset to point data:       9474
  number var. length records: 10
  point data format:          8
  point data record length:   38
  number of point records:    0
  number of points by return: 0 0 0 0 0
  scale factor x y z:         0.001 0.001 0.001
  offset x y z:               411244.965956295258366 1209501.267327087698504 145.499686675097934
  min x y z:                  411670.576 1210792.985 176.445
  max x y z:                  411875.273 1210954.779 192.589
  start of waveform data packet record: 0
  start of first extended variable length record: 44705986
  number of extended_variable length records: 0
  extended number of point records: 28279
  extended number of points by return: 16180 8825 2802 441 30 1 0 0 0 0 0 0 0 0 0
variable length header record 1 of 10:
  reserved             0
  user ID              'LASF_Projection'
  record ID            2112
  length after header  1142
  description          'PLS SpatialExplorer v9.0.1'
    WKT OGC COORDINATE SYSTEM:
    COMPD_CS["Compound CRS NAD83(2011) / Alaska zone 3 + NAVD88 depth + PROJ Geoid12A-Alaska.tif",
    PROJCS["NAD83(2011) / Alaska zone 3",
        GEOGCS["NAD83(2011)",
            DATUM["NAD83_National_Spatial_Reference_System_2011",
                SPHEROID["GRS 1980",6378137,298.257222101]],
            PRIMEM["Greenwich",0,
                AUTHORITY["EPSG","8901"]],
            UNIT["degree",0.0174532925199433,
                AUTHORITY["EPSG","9122"]],
            AUTHORITY["EPSG","6318"]],
        PROJECTION["Transverse_Mercator"],
        PARAMETER["latitude_of_origin",54],
        PARAMETER["central_meridian",-146],
        PARAMETER["scale_factor",0.9999],
        PARAMETER["false_easting",500000],
        PARAMETER["false_northing",0],
        UNIT["metre",1,
            AUTHORITY["EPSG","9001"]],
        AXIS["Easting",EAST],
        AXIS["Northing",NORTH]],
    VERT_CS["NAVD88 depth + PROJ Geoid12A-Alaska.tif",

        VERT_DATUM["North American Vertical Datum 1988",2005,
            AUTHORITY["EPSG","5103"]],
        UNIT["metre",1,
            AUTHORITY["EPSG","9001"]],
        AXIS["Gravity-related height",UP]]]
variable length header record 2 of 10:
  reserved             0
  user ID              'CRS_EPSG'
  record ID            9600
  length after header  1
  description          'PLS SpatialExplorer v9.0.1'
variable length header record 3 of 10:
  reserved             0
  user ID              'CRS_WKT2_2015'
  record ID            9700
  length after header  1932
  description          'PLS SpatialExplorer v9.0.1'
variable length header record 4 of 10:
  reserved             0
  user ID              'CRS_WKT2_2019'
  record ID            9702
  length after header  1970
  description          'PLS SpatialExplorer v9.0.1'
variable length header record 5 of 10:
  reserved             0
  user ID              'CRS_WKT1_GDAL'
  record ID            9706
  length after header  608
  description          'PLS SpatialExplorer v9.0.1'
variable length header record 6 of 10:
  reserved             0
  user ID              'CRS_PROJ_JSON'
  record ID            9800
  length after header  2614
  description          'PLS SpatialExplorer v9.0.1'
variable length header record 7 of 10:
  reserved             0
  user ID              'CRS_PROJ'
  record ID            9999
  length after header  113
  description          'PLS SpatialExplorer v9.0.1'
variable length header record 8 of 10:
  reserved             0
  user ID              'EPOCH'
  record ID            8000
  length after header  4
  description          'PLS SpatialExplorer v9.0.1'
variable length header record 9 of 10:
  reserved             0
  user ID              'TIME_FORMAT'
  record ID            9200
  length after header  28
  description          'PLS SpatialExplorer v9.0.1'
variable length header record 10 of 10:
  reserved             0
  user ID              'CRS_DEFINITIONS'
  record ID            9500
  length after header  145
  description          'PLS SpatialExplorer v9.0.1'
the header is followed by 2 user-defined bytes
reporting minimum and maximum for all LAS point record entries ...
  X              425610     630307
  Y             1291718    1453512
  Z               30945      47089
  intensity       27443      36931
  return_number       1          6
  number_of_returns   1          6
  edge_of_flight_line 0          0
  scan_direction_flag 0          0
  classification      2          2
  scan_angle    -39.378     36.564
  user_data           0         44
  point_source_ID     0          0
  gps_time 444595532.538836 444596560.012722
  Color R 0 0
        G 0 0
        B 0 0
      NIR 0 0
  extended_return_number          1      6
  extended_number_of_returns      1      6
  extended_classification         2      2
  extended_scan_angle    -39.378     36.564
  extended_scanner_channel        0      3
number of first returns:        16180
number of intermediate returns: 0
number of last returns:         28279
number of single returns:       16180
overview over extended number of returns of given pulse: 16180 8825 2802 441 30 1 0 0 0 0 0 0 0 0 0
histogram of classification of points:
           28279  ground (2)
While the tif from the lasgrid has not
 D:\Geodata\LAStools\bin\geotiffinfo64 -i uaf_point_-lasgrid64-step-1.tif
File [uaf_point_-lasgrid64-step-1.tif]:
TIFF Directory at offset 0x17b46 (97094)
  Image Width: 206 Image Length: 163

  Bits/Sample: 32
  Sample Format: IEEE floating point
  Compression Scheme: LZW
  Photometric Interpretation: min-is-black
  Samples/Pixel: 1
  Rows/Strip: 20
  Planar Configuration: single image plane
  Software: LAStools is a product of rapidlasso GmbH, Germany
  Artist: created by LAStools (c) in...@rapidlasso.de
  GeoPixelScale: 1.000000,1.000000,0.000000
  GeoTiePoints: 0.000000,0.000000,0.000000,411670.000000,1210955.000000,0.000000
  GDALNoDataValue: -9999

Attached is the .LAS file, which is the ground classification, followed by taking the 40th percentile of the ground class.

Thanks for your help!


--
Download LAStools at
https://rapidlasso.de
Manage your settings at
https://groups.google.com/g/lastools/membership
---
You received this message because you are subscribed to the Google Groups "LAStools - efficient tools for LiDAR processing" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lastools+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/lastools/6b0de694-d775-4396-af90-bfab57b173can%40googlegroups.com.


--


Eyal Saiet

Airborne and spatial data specialist
Remote sensing and in-situ measurements

Geophysical Institute 
University of Alaska Fairbanks
Fairbanks, AK 99775



The mind is not a vessel to be filled, but a fire to be kindled. Plutarch

uaf_point_cloud_25_10_15_crop_lasground_new64-step-2_lasthin64-percentile-40.las

LAStools - efficient tools for LiDAR processing

unread,
Mar 16, 2026, 2:11:30 PM (yesterday) Mar 16
to LAStools - efficient tools for LiDAR processing
Hi Eyal,
thanks for the sample data.
Right now we would say, the WKT is either not valid or very strange and not able to convert.
If you are happy with just the horizontal CRS in your result you could easy just add the according EPSG to your command and overwrite the WKT in the file:
    lasgrid64 -i long_filename.las -o tmp2.tif -v -step 1 -epsg 6396
This would result in a GeoTIFF with the according GeoKeyDirectory.
Another option would be either to change your WKT in the source file (e.g. using las2las64) or to write the GeoTIFF information afterwards using GeoTIFF tools like QGIS or osgeo.

Cheers,

Jochen @rapidlasso
Reply all
Reply to author
Forward
0 new messages