Windows环境下R中GDAL Error1及节点栈溢出问题求助
问题描述
- 操作系统:Windows
- 使用
st_transform转换栅格文件CRS后绘图,触发GDAL Error 1警告;将矢量要素转换为该栅格新CRS后,用ggplot绘制sf点数据时再次触发GDAL Error 1,错误提示PostgreSQL目录下的proj.db版本不兼容,存在多PROJ版本冲突,最终出现Error: node stack overflow错误。 - 已安装PostGIS、R、QGIS,R中PROJ包版本为0.4.0;尝试重装R、rgdal无效,R Studio和VS Code中均会出现该问题。
- 咨询:是否需要清理安装GDAL?若需要,如何在不卸载PostGIS的情况下操作?
解决方案
1. 是否需要清理安装GDAL?
需要,但无需完全卸载现有GDAL,核心是让R优先调用兼容的PROJ/GDAL版本,规避和PostGIS自带版本的冲突。
2. 不卸载PostGIS的操作步骤
步骤1:确认R当前使用的GDAL/PROJ路径
在R中运行以下命令,查看当前加载的GDAL和PROJ路径,确认是否指向PostgreSQL目录(如C:\Program Files\PostgreSQL\XX\bin):library(sf) sf_extSoftVersion()步骤2:安装独立的GDAL/PROJ包
下载OSGeo4W的64位安装包,安装到非PostGIS的独立目录(比如C:\OSGeo4W64),安装时勾选gdal、proj、geos相关组件。步骤3:调整系统环境变量优先级
- 打开Windows「环境变量」设置(右键此电脑→属性→高级系统设置→环境变量)。
- 在系统变量的
Path中,将OSGeo4W的bin目录(如C:\OSGeo4W64\bin)移到PostgreSQL的bin目录之前。 - 添加两个新的系统变量:
PROJ_LIB:值设为C:\OSGeo4W64\share\proj(对应你的OSGeo4W安装路径)GDAL_DATA:值设为C:\OSGeo4W64\share\gdal(对应你的OSGeo4W安装路径)
步骤4:重新安装R的地理相关包
先卸载现有冲突包:remove.packages(c("sf", "rgdal", "proj"))重启R后重新安装,确保包链接到新的GDAL/PROJ:
install.packages("sf") install.packages("rgdal") install.packages("proj")再次运行
sf_extSoftVersion()确认路径已切换到OSGeo4W目录。步骤5:验证问题是否解决
重新执行之前的st_transform转换和ggplot绘图代码,检查GDAL错误与栈溢出问题是否消失。
额外注意事项
- 不要删除PostGIS自带的PROJ/GDAL,PostGIS依赖其运行,仅调整优先级让R使用独立版本即可。
- 若QGIS出现版本冲突,可修改QGIS快捷方式的「目标」字段,添加OSGeo4W环境变量,确保QGIS使用自身默认的GDAL版本(QGIS通常默认安装在OSGeo4W目录下,一般不会冲突)。
内容的提问来源于stack exchange,提问作者Banerjee Anirban
相关产品推荐
相关产品推荐

