为什么 arcpullr 从 ArcGIS REST API 拉出一个空的 RasterBrick?

Why is arcpullr pulling an empty RasterBrick from ArcGIS REST API?

我无法从 ArcGIS REST API 获取 R 中的栅格数据。它位于端点 https://maps.vcgi.vermont.gov/arcgis/rest/services/EGC_service/IMG_VCGI_LIDARNDSM_WM_CACHE_v1/ImageServer,我只想获取我感兴趣的区域的数据。我可以使用 url“https://maps.vcgi.vermont.gov/arcgis/services/EGC_services/IMG_VCGI_LIDARNDSM_WM_CACHE_v1/ImageServer/WCSServer”成功地将数据作为网络覆盖服务加载到 QGIS 中,但我想要一些可以变成栅格图层或栅格的东西R 中的砖

我更喜欢高级方法并尝试了 arcpullr 包,使用我感兴趣区域的 sf 多边形对象来定义边界框(aoi下面的代码,这是一个简单的特征集合,包含 1 个特征和 1 个字段; 边界框:xmin:499682.2 ymin:208467.7 xmax:503271.3 ymax:212056.7; 预计 CRS:NAD83/佛蒙特州,32145)。这个 returns 一个空的光栅砖(所有值都是 NA)在正确的位置:

endpoint <- "https://maps.vcgi.vermont.gov/arcgis/rest/services/EGC_services/IMG_VCGI_LIDARNDSM_WM_CACHE_v1/ImageServer/"
ndsm <- get_image_layer(url = endpoint, sf_object = aoi)

我也尝试根据 API reference 自己构建请求,使用各种查询,并且只能写入空图像文件(虽然服务器 returns 状态代码为 ' 200')。这是一个例子:

url <- "https://maps.vcgi.vermont.gov/arcgis/rest/services/EGC_services/IMG_VCGI_LIDARNDSM_WM_CACHE_v1/ImageServer/exportImage?f=html&bbox=499682.2,208467.7,503271.3,212056.7&imageSR=32145&bboxSR=32145&format=png"
file = tempfile(fileext = ".png")
httr::GET(url = url, httr::write_disk(file))

对于让 arcpullr 工作的任何想法、对其他相对简单方法的建议,或(作为最后的手段)学习更多关于 APIs 的资源,我将不胜感激。

您遇到的问题是您没有使用正确的 crs。您只需要将 aoiEPSG: 32145 转换为 EPSG: 3857(空间投影信息在 Service webpage 上提供)。

所以,请在下面找到一个小表达式。

Reprex

  • 代码
library(arcpullr)

# Creating the aoi in `EPSG: 32145` and converting it into the right crs (i.e. `EPSG: 3857`)
aoi <- st_sf(st_as_sfc(st_bbox(c(xmin = 499682.2, xmax = 503271.3, ymin = 208467.7, ymax = 212056.7), crs = st_crs(32145)))) %>% 
  st_transform(., st_crs(3857))

# Extracting the raster corresponding to the `aoi`
endpoint <- "https://maps.vcgi.vermont.gov/arcgis/rest/services/EGC_services/IMG_VCGI_LIDARNDSM_WM_CACHE_v1/ImageServer/"
ndsm <- get_image_layer(url = endpoint, sf_object = aoi)
  • 输出(rasterbrick 包含像素值)
ndsm
#> class      : RasterBrick 
#> dimensions : 400, 400, 160000, 3  (nrow, ncol, ncell, nlayers)
#> resolution : 12.58247, 12.58247  (x, y)
#> extent     : -8071116, -8066083, 5523882, 5528915  (xmin, xmax, ymin, ymax)
#> crs        : +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs 
#> source     : memory
#> names      : X_ags_6919e084_8cf5_46f6_b95c_1090872a66d0.1, X_ags_6919e084_8cf5_46f6_b95c_1090872a66d0.2, X_ags_6919e084_8cf5_46f6_b95c_1090872a66d0.3 
#> min values :                                            1,                                           49,                                            0 
#> max values :                                          254,                                          254,                                          149
  • 可视化
raster::plotRGB(ndsm)

reprex package (v2.0.1)

创建于 2022-02-21