MacOS(M1)下用lidR加载LAS文件到R会话报错求助
M1芯片Mac上lidR读取LAS文件报错及安装问题解决
问题场景
同一套读取LAS激光点云的R代码在Windows 10上正常运行,但在2020款M1芯片MacBook上执行readLAS()时触发类型不兼容错误,且其他Mac设备也存在类似问题。
核心代码如下:
# Install and load required packages required_packages <- c("lidR", "sf", "terra", "future", "progressr", "entropy", "e1071", "ggplot2", "gridExtra", "moments", "dplyr") install.packages(setdiff(required_packages, installed.packages()[, "Package"])) lapply(required_packages, library, character.only = TRUE) ### Load LAS-File ### las_file <- "~/Documents/Masterarbeit/Training_data/UAV_data/classified_ndom_komplett.las" las <- readLAS(las_file)
报错信息
Error: Not compatible with requested type: [type=character; target=double].
已尝试的排障操作
安装lidR时多次遇到依赖库缺失问题(如libemutls_w等gfortran相关库),已尝试:
- 设置环境变量指向Homebrew安装的gcc
- 通过Homebrew安装gcc
- 创建缺失库的符号链接
- 安装旧版本gcc
- 手动编译lidR源码
已知问题与解决方案
这是M1/ARM架构Mac上lidR的已知兼容性问题,根源在于底层依赖库的编译适配问题,可按以下步骤解决:
确认R版本为原生ARM架构
避免使用Rosetta转译的Intel版本R,直接从CRAN下载M1专属的R安装包。安装适配M1的底层依赖
通过Homebrew安装地理空间依赖库:brew install gdal proj geos指定编译参数安装lidR
启动R后,用源码安装方式指定依赖路径:install.packages("lidR", type = "source", configure.args = "--with-gdal-config=/opt/homebrew/bin/gdal-config --with-proj-config=/opt/homebrew/bin/proj-config")解决gfortran库缺失问题
安装适配M1的gcc版本:brew install gcc@12在启动R前设置环境变量(可添加到
~/.zshrc或~/.bashrc永久生效):export CC=/opt/homebrew/bin/gcc-12 export CXX=/opt/homebrew/bin/g++-12 export FC=/opt/homebrew/bin/gfortran-12重新启动R后再安装lidR。
优化文件路径处理
读取LAS文件时,用path.expand()确保路径解析正确:las_file <- path.expand("~/Documents/Masterarbeit/Training_data/UAV_data/classified_ndom_komplett.las") las <- readLAS(las_file)
该问题已在lidR官方维护记录中存在,后续版本已针对ARM架构做适配,建议安装最新版lidR以获得更好的兼容性。
内容的提问来源于stack exchange,提问作者Paule
相关产品推荐
相关产品推荐

