You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

2024版R安装sf包遇GDAL依赖问题,求欧洲地图绘制方案

解决Debian非root源码R环境下sf包安装问题及替代绘图方案

一、解决sf包的依赖安装问题

你遇到的gdal-config not found错误,本质是系统GDAL库的路径未被R识别,或者非root环境下依赖未正确安装。以下是两种可行方案:

方案1:有sudo权限时补全系统依赖

如果你的账号有sudo权限,之前的命令缺少了sf必需的libgeos-dev和libproj-dev,执行完整的系统依赖安装:

sudo apt-get update && sudo apt-get install libudunits2-dev libgdal-dev libgeos-dev libproj-dev gdal-bin

安装完成后,重新在R中执行:

install.packages("sf")

方案2:无sudo权限时编译依赖到用户目录

如果无法使用sudo,需要手动编译GDAL、GEOS、PROJ到用户本地目录,再让R指向这些依赖:

  1. 创建本地安装目录:
mkdir -p ~/local
  1. 依次编译安装GEOS、PROJ、GDAL:
# 安装GEOS
wget https://download.osgeo.org/geos/geos-3.12.1.tar.gz
tar xzf geos-3.12.1.tar.gz
cd geos-3.12.1
./configure --prefix=$HOME/local
make && make install
cd ..

# 安装PROJ
wget https://download.osgeo.org/proj/proj-9.3.1.tar.gz
tar xzf proj-9.3.1.tar.gz
cd proj-9.3.1
./configure --prefix=$HOME/local --with-geos=$HOME/local/bin/geos-config
make && make install
cd ..

# 安装GDAL
wget https://download.osgeo.org/gdal/3.8.4/gdal-3.8.4.tar.gz
tar xzf gdal-3.8.4.tar.gz
cd gdal-3.8.4
./configure --prefix=$HOME/local --with-proj=$HOME/local --with-geos=$HOME/local/bin/geos-config
make && make install
cd ..
  1. 在R中设置环境变量并安装sf:
# 设置路径让R找到本地依赖
Sys.setenv(PATH = paste0(Sys.getenv("PATH"), ":", Sys.getenv("HOME"), "/local/bin"))
Sys.setenv(LD_LIBRARY_PATH = paste0(Sys.getenv("LD_LIBRARY_PATH"), ":", Sys.getenv("HOME"), "/local/lib"))
Sys.setenv(CPPFLAGS = paste0("-I", Sys.getenv("HOME"), "/local/include"))
Sys.setenv(LDFLAGS = paste0("-L", Sys.getenv("HOME"), "/local/lib"))

# 安装sf
install.packages("sf")

二、无需sf包的欧洲地图绘制方案

如果仍无法安装sf,推荐两种轻量方案:

方案1:使用maps + mapdata包(零系统依赖)

这两个纯R包无需GDAL等库,安装简单,适合快速绘图:

install.packages(c("maps", "mapdata"))

library(maps)
library(mapdata)

# 绘制高精度欧洲地图
map("worldHires", 
    regions = c("Europe", "Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus", 
                "Czech Republic", "Denmark", "Estonia", "Finland", "France", 
                "Germany", "Greece", "Hungary", "Ireland", "Italy", "Latvia", 
                "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland", 
                "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", 
                "Sweden", "United Kingdom"),
    fill = TRUE, col = "lightgray", border = "white")

# 叠加经纬度点(示例:柏林、巴黎)
points(x = c(13.4050, 2.3522), y = c(52.5200, 48.8566), 
       pch = 19, col = "red", cex = 1.2)

方案2:使用ggplot2 + rnaturalearth包

若偏好ggplot2风格,可使用rnaturalearth获取地图数据,无需sf时用sp格式:

install.packages(c("ggplot2", "rnaturalearth"))

library(ggplot2)
library(rnaturalearth)

# 获取欧洲国家数据(sp格式,无需sf)
europe_sp <- ne_countries(continent = "europe", returnclass = "sp")
europe_df <- fortify(europe_sp)

# 绘制地图并叠加坐标点
ggplot(europe_df, aes(long, lat, group = group)) +
  geom_polygon(fill = "lightgray", color = "white") +
  geom_point(aes(x = c(13.4050, 2.3522), y = c(52.5200, 48.8566)), 
             color = "red", size = 3) +
  coord_map() +
  theme_minimal()

内容的提问来源于stack exchange,提问作者dpk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 20:37:14