grass icon indicating copy to clipboard operation
grass copied to clipboard

[Bug] r.in.pdal does not read *.las file CRS metadata

Open gregorywaynepower opened this issue 6 months ago • 7 comments

Describe the bug

Unable to run r.in.pdal on Ubuntu 22.04 LTS because GRASS isn't reading SRS metadata from file. I'm also not sure on which SRS to pick from the output of pdal info --metadata be_20066902.las

From QGIS:

  • horizontal CRS is EPSG:6543 - NAD83(2011) / North Carolina (ftUS)
  • vertical CRS is EPSG:6360 - NAVD88 height (ftUS)

To reproduce

  1. Download and unzip point cloud information.
  2. Start grass
  3. Run r.in.pdal -e -n input=be_20066902.las output=dummy_raster
  4. See error ERROR: The input dataset has undefined projection

Expected behavior

I would expect the command to complete successfully. pdal can read the spatialreference metadata from the file. See attached file: be_laz_metadata_from_pdal_info.txt

Screenshots

System description

g.version -rge output:

version=8.4.1 date=2025 revision=exported build_date=2025-03-26 build_platform=x86_64-pc-linux-gnu build_off_t_size=8 libgis_revision=8.4.1 libgis_date=2025-03-28T14:29:40+00:00 proj=9.3.1 gdal=3.8.4 geos=3.12.1 sqlite=3.37.2

GUI About system output:

System Info
GRASS version: 8.4.1
Code revision: exported
Build date: 2025-03-26
Build platform: x86_64-pc-linux-gnu
GDAL: 3.8.4
PROJ: 9.3.1
GEOS: 3.12.1
SQLite: 3.37.2
Python: 3.10.12
wxPython: 4.2.1
Platform: Linux-6.12.10-76061203-generic-x86_64-with-glibc2.35

Additional context

gregorywaynepower avatar May 29 '25 14:05 gregorywaynepower

Is your project set to the the same CRS as your las file?

cwhite911 avatar May 29 '25 14:05 cwhite911

No it was not, it was set to ESPG:2264. But since I've got the CRS's from QGIS I can set it. I know I can return the extent with r.in.pdal -g.

Just trying to figure out a way to use just GRASS to figure out what the CRS of the *.las file is if I can.

gregorywaynepower avatar May 29 '25 14:05 gregorywaynepower

I've run into this before. The projection information in the las file is not recognized by proj. I suspect an ESRI specific projection. I have not used this method, but I believe you can enter a proj4 string to describe the las file projection

On Thu, May 29, 2025, 10:50 AM Gregory Power @.***> wrote:

gregorywaynepower left a comment (OSGeo/grass#5791) https://github.com/OSGeo/grass/issues/5791#issuecomment-2919645397

No it was not, it was set to ESPG:2264. But since I've got the CRS's from QGIS I can set it. I know I can return the bounds with r.in.pdal -g.

Just trying to figure out a way to use just GRASS if I can.

— Reply to this email directly, view it on GitHub https://github.com/OSGeo/grass/issues/5791#issuecomment-2919645397, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAQQR254HR6CAZFHRTCGDTD3A4NCRAVCNFSM6AAAAAB6FUO65GVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSMJZGY2DKMZZG4 . You are receiving this because you are subscribed to this thread.Message ID: @.***>

dnewcomb avatar May 29 '25 14:05 dnewcomb

Hmm, not seeing that option in the 8.4 docs. Suggest grabbing the bounds with the -g option and feeding that in to g.region to set extent and resolution to match your other data. Then use r.in.pdal with the override projection option. I had to do this all of the time with the 2014/ 2015 NC data for the canopy height analysis. Bear in mind 2264 uses NAD83, and the 2015 data for wake county was collected in epsg 6543 which uses NAD83 (2011).

On Thu, May 29, 2025, 10:58 AM Doug Newcomb @.***> wrote:

I've run into this before. The projection information in the las file is not recognized by proj. I suspect an ESRI specific projection. I have not used this method, but I believe you can enter a proj4 string to describe the las file projection

On Thu, May 29, 2025, 10:50 AM Gregory Power @.***> wrote:

gregorywaynepower left a comment (OSGeo/grass#5791) https://github.com/OSGeo/grass/issues/5791#issuecomment-2919645397

No it was not, it was set to ESPG:2264. But since I've got the CRS's from QGIS I can set it. I know I can return the bounds with r.in.pdal -g.

Just trying to figure out a way to use just GRASS if I can.

— Reply to this email directly, view it on GitHub https://github.com/OSGeo/grass/issues/5791#issuecomment-2919645397, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAQQR254HR6CAZFHRTCGDTD3A4NCRAVCNFSM6AAAAAB6FUO65GVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSMJZGY2DKMZZG4 . You are receiving this because you are subscribed to this thread.Message ID: @.***>

dnewcomb avatar May 29 '25 15:05 dnewcomb

@dnewcomb That's because it's an add-on in 8.4. Here's the link..

Using QGIS--which as far as I know only uses PDAL to read point clouds--I was able to figure out that the horizontal CRS is EPSG:6543 - NAD83(2011) / North Carolina (ftUS) and the vertical CRS is EPSG:6360 - NAVD88 height (ftUS).

gregorywaynepower avatar May 29 '25 15:05 gregorywaynepower

Having the vertical CRS included may be part of the issue.

On Thu, May 29, 2025 at 11:21 AM Gregory Power @.***> wrote:

gregorywaynepower left a comment (OSGeo/grass#5791) https://github.com/OSGeo/grass/issues/5791#issuecomment-2919737675

@dnewcomb https://github.com/dnewcomb That's because it's an add-on in 8.4. Here's the link. https://grass.osgeo.org/grass-stable/manuals/addons/r.in.pdal.html.

Using QGIS I was able to figure out that the horizontal CRS is EPSG:6543 - NAD83(2011) / North Carolina (ftUS) and the vertical CRS is EPSG:6360 - NAVD88 height (ftUS).

— Reply to this email directly, view it on GitHub https://github.com/OSGeo/grass/issues/5791#issuecomment-2919737675, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAQQR255TZKGYLWSW2AZ6PT3A4QYJAVCNFSM6AAAAAB6FUO65GVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSMJZG4ZTONRXGU . You are receiving this because you were mentioned.Message ID: @.***>

dnewcomb avatar May 29 '25 17:05 dnewcomb

@dnewcomb You think transforming/reprojecting via PDAL may get me to where I need to be? Or just overwriting with the horizontal CRS?

gregorywaynepower avatar May 29 '25 21:05 gregorywaynepower