如何使用 arcpullr::get_spatial_layer() 和 arcpullr::get_layer_by_poly()
How to use arcpullr::get_spatial_layer() and arcpullr::get_layer_by_poly()
我无法通过包文档解决这个问题 https://cran.r-project.org/web/packages/arcpullr/vignettes/intro_to_arcpullr.html。
我的代码return下面描述的错误。
library(arcpullr)
url <- "https://arcgis.deq.state.or.us/arcgis/rest/services/WQ/WBD/MapServer/1"
huc8_1 <- get_spatial_layer(url)
huc8_2 <- get_layer_by_poly(url,geometry = "esriGeometryPolygon")
huc8_1:
Error in if (layer_info$type == "Group Layer") { :
argument is of length zero
huc8_2:
Error in get_sf_crs(geometry) : "sf" %in% class(sf_obj) is not TRUE
如果您能提供任何帮助来解释错误并提出任何解决方案,我们将不胜感激。谢谢!
我没有使用 arcpullr
包。将 leaflet.esri::addEsriFeatureLayer
与 where
子句一起使用是有效的。
参考下面相关代码,作为例子:
leaflet.esri::addEsriFeatureLayer(
url="https://arcgis.deq.state.or.us/arcgis/rest/services/WQ/IR_201820_byParameter/MapServer/2",
options = leaflet.esri::featureLayerOptions(where = IR_where_huc12)
)
您必须将 sf 对象作为第二个参数传递给任何 get_layer_by_*
函数。我使用点而不是多边形进行空间查询(因为它更容易创建)稍微改变了您的示例,但是 get_layer_by_poly
使用 sf 多边形而不是点的方式相同。此外,您使用的服务需要令牌。我将 url 更改为 USGS HU 6-digit basins 而不是
library(arcpullr)
url <- "https://hydro.nationalmap.gov/arcgis/rest/services/wbd/MapServer/3"
query_pt <- sf_point(c(-90, 45))
# this would query everything in the feature layer, which may or may not be huge
# huc8_1 <- get_spatial_layer(url)
huc8_2 <- get_layer_by_point(url, query_pt)
huc_map <- plot_layer(huc8_2)
huc_map
huc_map + ggplot2::geom_sf(data = query_pt)
我无法通过包文档解决这个问题 https://cran.r-project.org/web/packages/arcpullr/vignettes/intro_to_arcpullr.html。
我的代码return下面描述的错误。
library(arcpullr)
url <- "https://arcgis.deq.state.or.us/arcgis/rest/services/WQ/WBD/MapServer/1"
huc8_1 <- get_spatial_layer(url)
huc8_2 <- get_layer_by_poly(url,geometry = "esriGeometryPolygon")
huc8_1:
Error in if (layer_info$type == "Group Layer") { : argument is of length zero
huc8_2:
Error in get_sf_crs(geometry) : "sf" %in% class(sf_obj) is not TRUE
如果您能提供任何帮助来解释错误并提出任何解决方案,我们将不胜感激。谢谢!
我没有使用 arcpullr
包。将 leaflet.esri::addEsriFeatureLayer
与 where
子句一起使用是有效的。
参考下面相关代码,作为例子:
leaflet.esri::addEsriFeatureLayer(
url="https://arcgis.deq.state.or.us/arcgis/rest/services/WQ/IR_201820_byParameter/MapServer/2",
options = leaflet.esri::featureLayerOptions(where = IR_where_huc12)
)
您必须将 sf 对象作为第二个参数传递给任何 get_layer_by_*
函数。我使用点而不是多边形进行空间查询(因为它更容易创建)稍微改变了您的示例,但是 get_layer_by_poly
使用 sf 多边形而不是点的方式相同。此外,您使用的服务需要令牌。我将 url 更改为 USGS HU 6-digit basins 而不是
library(arcpullr)
url <- "https://hydro.nationalmap.gov/arcgis/rest/services/wbd/MapServer/3"
query_pt <- sf_point(c(-90, 45))
# this would query everything in the feature layer, which may or may not be huge
# huc8_1 <- get_spatial_layer(url)
huc8_2 <- get_layer_by_point(url, query_pt)
huc_map <- plot_layer(huc8_2)
huc_map
huc_map + ggplot2::geom_sf(data = query_pt)