【问题标题】:GET from terminal works but httr::GET does not来自终端的 GET 有效,但 httr::GET 无效
【发布时间】:2018-03-09 12:21:27
【问题描述】:

我正在尝试使用httr::GET 从服务器下载栅格。我们曾经有这个工作,但对服务器进行了一些更改,现在它不起作用。

通过浏览器或通过终端(ubuntu 16.04)中的 GET 使用 URL 可以正常工作并返回有效的 tif 栅格。但是使用来自httr::GET 的相同url 不起作用并给出Status: 400

我唯一的猜测是它与数据的编码有关。但我真的不确定。

file <- paste0(tempdir(), '/file.tif')
r <- 
  httr::GET('https://map.ox.ac.uk/geoserver/Explorer/ows?service=WCS&version=2.0.1&request=GetCoverage&format=image/geotiff&coverageid=2015_Nature_Africa_PR&SUBSET=Long(-3,50.483779907)&SUBSET=Lat(-25.6089496609999,-11.9454326629999)&SUBSET=time(\"2015-01-01T00:00:00.000Z\")',
           httr::write_disk(file, overwrite = TRUE))

ras <- raster::raster(file)

# I'm now totally confused about when and where quotes are escaped, so just to make sure...
r <- 
  httr::GET('https://map.ox.ac.uk/geoserver/Explorer/ows?service=WCS&version=2.0.1&request=GetCoverage&format=image/geotiff&coverageid=2015_Nature_Africa_PR&SUBSET=Long(-3,50.483779907)&SUBSET=Lat(-25.6089496609999,-11.9454326629999)&SUBSET=time("2015-01-01T00:00:00.000Z")',
            httr::write_disk(file, overwrite = TRUE))

ras <- raster::raster(file)

# But just putting the url in the browser works fine.
# https://map.ox.ac.uk/geoserver/Explorer/ows?service=WCS&version=2.0.1&request=GetCoverage&format=image/geotiff&coverageid=2015_Nature_Africa_PR&SUBSET=Long(-3,50.483779907)&SUBSET=Lat(-25.6089496609999,-11.9454326629999)&SUBSET=time("2015-01-01T00:00:00.000Z")

# eg 
# rr <- raster::raster('~/Desktop/2015_Nature_Africa_PR3.tif')


# And using the URL with GET in the terminal works
# GET "https://map.ox.ac.uk/geoserver/Explorer/ows?service=WCS&version=2.0.1&request=GetCoverage&format=image/geotiff&coverageid=2015_Nature_Africa_PR&SUBSET=Long(-3,50.483779907)&SUBSET=Lat(-25.6089496609999,-11.9454326629999)&SUBSET=time(\"2015-01-01T00:00:00.000Z\")" > ~/Desktop/2015_Nature_Africa_PR4.tif
# eg
# rr <- raster::raster('~/Desktop/2015_Nature_Africa_PR4.tif')

【问题讨论】:

    标签: r httr


    【解决方案1】:

    包裹URLEncode 对我有用:

    library(httr)
    library(raster)
    
    file <- paste0(tempdir(), '/file.tif')
    url1 <- 'https://map.ox.ac.uk/geoserver/Explorer/ows?service=WCS&version=2.0.1&request=GetCoverage&format=image/geotiff&coverageid=2015_Nature_Africa_PR&SUBSET=Long(-3,50.483779907)&SUBSET=Lat(-25.6089496609999,-11.9454326629999)&SUBSET=time("2015-01-01T00:00:00.000Z")'
    
    r   <- GET(URLencode(url1), write_disk(file, overwrite = TRUE))
    ras <- raster(file)
    

    【讨论】:

    • 太棒了!谢谢你。不知道发生了什么改变以使其成为必要,但我不在乎。它有效。
    • 我会奖励你的。我目前得到“你可以在 5 小时内奖励赏金”。我不太明白。
    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多