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

如何在R中从ESRI REST API MapServer下载带像元值的栅格图层?

解决NOAA海岸洪水栅格图层下载问题的建议

一、修正arcpullr包的调用方式

get_map_layer默认返回渲染后的PNG/JPG图像,要获取带原始像元值的栅格,必须指定正确的输出格式与参数:

library(arcpullr)
library(tigris)
library(dplyr)
library(sf)

# 定义目标图层URL
url <- "https://coast.noaa.gov/arcgis/rest/services/FloodExposureMapper/CFEM_CoastalFloodHazardComposite/MapServer/0"

# 获取阿拉巴马州边界并转换CRS
al <- states(cb = TRUE, year = 2022) %>% 
  filter(NAME == "Alabama") %>% 
  st_transform(3857)

# 调用函数并指定栅格输出参数
al_flood_raster <- get_map_layer(
  url = url,
  sf_object = al,
  bbox_crs = 3857,
  format = "tiff",          # 指定输出GeoTIFF格式
  imageSR = 3857,
  pixelType = "U8",         # 匹配图层原始像素类型(该图层为8位无符号整数)
  noData = -9999,           # 与图层元数据的无数据值保持一致
  renderingRule = NULL,     # 禁用渲染规则,保留原始像元值
  returnType = "image"      # 确保返回栅格对象
)

# 验证栅格结果
print(al_flood_raster)

二、手动构造ArcGIS REST API请求(httr+terra)

如果arcpullr仍报错,直接调用ArcGIS的exportImage端点,严格按参数规范构造请求:

library(httr)
library(terra)

# 从sf对象提取bbox,格式为xmin,ymin,xmax,ymax
bbox <- st_bbox(al) %>% as.numeric() %>% paste(collapse = ",")

# 构造API请求链接
api_url <- paste0(
  url, "/exportImage?",
  "bbox=", bbox,
  "&bboxSR=3857",
  "&imageSR=3857",
  "&size=2000,2000",        # 调整分辨率,数值越大栅格越清晰
  "&format=tiff",
  "&pixelType=U8",
  "&noData=-9999",
  "&f=json"                 # 先请求获取临时下载链接
)

# 获取下载地址并下载栅格
response <- GET(api_url)
resp_content <- content(response, "parsed")
download_url <- resp_content$href

temp_file <- tempfile(fileext = ".tif")
download.file(download_url, temp_file, mode = "wb")
flood_raster <- rast(temp_file)

# 可视化验证
plot(flood_raster)

三、常见错误排查

  • "Invalid URL":直接在浏览器访问图层URL,确认端点存在,检查链接是否有多余斜杠或拼写错误
  • "Invalid or missing input parameters":
    • 确认bbox格式为xmin,ymin,xmax,ymax,无空格或多余字符
    • 核对pixelType与图层元数据一致(浏览器访问图层URL可查看"Pixel Type"字段)
    • 确保bboxSR和imageSR参数匹配,或为服务支持的CRS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:34:55