在管道工api中使用sf包-sf :: st_as_sf似乎失败

问题描述

我正在尝试使用利用sf软件包的plumber软件包创建一个API。以下函数获取加利福尼亚某个位置的x / y坐标,并使用sf :: st_intersects函数检查坐标所属的电商区域。当我在R会话中以交互方式运行它时,但是当我使用水管工进行部署时,该函数有效

edu_mapping <- function(x,y) {
  
  st_read_edu <- sf::st_read('https://services3.arcgis.com/bWPjFyq029ChCGur/arcgis/rest/services/California_Electric_Utility_Service_Areas/FeatureServer/0/query?where=1%3D1&objectIds=&time=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&units=esriSRUnit_Meter&returnGeodetic=false&outFields=*&returnGeometry=true&returnCentroid=false&featureEncoding=esriDefault&multipatchOption=xyFootprint&maxAllowableOffset=&geometryPrecision=&outSR=&datumTransformation=&applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&returnQueryGeometry=false&returndistinctValues=false&cacheHint=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&resultOffset=&resultRecordCount=&returnZ=false&returnM=false&returnExceededLimitFeatures=true&quantizationParameters=&sqlFormat=none&f=pgeojson&token=')
  
  points <- data.frame(x = x,y = y)
  
  points_sf <- sf::st_as_sf(points,coords = c('x','y'),crs = 4326)
  
  intersection <- sf::st_intersects(st_read_edu,points_sf,sparse = FALSE) %>%
    as.data.frame() %>%
    dplyr::mutate(edu = st_read_edu$Utility) %>%
    dplyr::rename(within_edu_territory = V1) %>%
    filter(within_edu_territory == TRUE)
  
  return(intersection)
}

edu_mapping(x = -118.240290,y = 34.072580)

  within_edu_territory                                     edu
1                 TRUE Los Angeles Department of Water & Power

但是,当我在api中运行相同的代码时,我没有得到任何返回值,因为inside_edu_territory的所有值都返回false:

[
  {
    "within_edu_territory": false,"edu": "PacifiCorp"
  },{
    "within_edu_territory": false,"edu": "Liberty Utilities"
  },"edu": "Surprise Valley Electrification Corporation"
  },"edu": "Plumas-Sierra Rural Electric Cooperative"
  },"edu": "Shelter Cove Resort Improvement district"
  },"edu": "Valley Electrical Association"
  },"edu": "Anza Electric Cooperative,Inc."
  },"edu": "Sonoma Clean Power"
  },"edu": "Morongo Band of Mission Indians"
  },"edu": "Aha Macav Power Service"
  },"edu": "Biggs Municipal Utilities"
  },"edu": "Imperial Irrigation district"
  },"edu": "Port of Stockton"
  },"edu": "City of Pittsburg"
  },"edu": "Lathrop Irrigation district"
  },"edu": "City of Riverside"
  },"edu": "Rancho Cucamonga Municipal Utility"
  },"edu": "City of Industry"
  },"edu": "Lassen Municipal Utility district"
  },"edu": "Alameda Power & Telecom"
  },"edu": "Redding Electric Utility"
  },"edu": "Colton Electric Utility Department"
  },"edu": "Moreno Valley Utility"
  },"edu": "City of Lompoc Electric Division"
  },"edu": "Port of Oakland"
  },"edu": "Modesto Irrigation district"
  },"edu": "Power and Water Resource Pooling Authority"
  },"edu": "City of Healdsburg Electric Department"
  },"edu": "Roseville Electric"
  },"edu": "Pasadena Water & Power"
  },"edu": "Turlock Irrigation district"
  },"edu": "City of Palo Alto"
  },"edu": "Trinity Public Utilities district"
  },"edu": "Silicon Valley Power"
  },"edu": "Los Angeles Department of Water & Power"
  },"edu": "City of Needles"
  },"edu": "Sacramento Municipal Utility district"
  },"edu": "City of Cerritos"
  },"edu": "Merced Irrigation district"
  },"edu": "Eastside Power Authority"
  },"edu": "Truckee Donner Public Utilities district"
  },"edu": "Azusa Light & Power"
  },"edu": "City of Corona Department of Water & Power"
  },"edu": "City of Banning Electric Department"
  },"edu": "City of Anaheim Public Utilities Department"
  },"edu": "Lodi Electric Utility"
  },"edu": "Kirkwood Meadows Public Utility district"
  },"edu": "City of Ukiah Electric Utilities Division"
  },"edu": "Gridley Electric Utility"
  },"edu": "City of Vernon Municipal Light Department"
  },"edu": "Burbank Water & Power"
  },"edu": "City and County of San Francisco - Hetch Hetchy Water and Power"
  },"edu": "GlenDale Water & Power"
  },"edu": "City of Shasta Lake"
  },"edu": "Victorville Municipal Utilities Services"
  },"edu": "Southern California Edison"
  },"edu": "Pacific Gas & Electric Company"
  },"edu": "San Diego Gas & Electric"
  },"edu": "Bear Valley Electric Service"
  },"edu": "Western Area Power Administration"
  }
]

似乎正在发生的事情是,points_sf对象应返回(-118.2403 34.07258)的几何,而在管道工API中返回的值为(1,1)。

我在启动后在本地调用它,就像这样:

root <- plumber::pr("plumber_test_r_file.R")

root %>%
  plumber::pr_run()

这是我在浏览器中的呼叫:

http://127.0.0.1:5595/intersection?x=-118.240290&y=34.072580

它正在比较每个x / y的多边形的几何形状似乎在检查相交之前已正确设置格式,对于points_sf来说似乎有点奇怪,因为x / y的几何形状被弄乱了。 / p>

为什么会这样?

我的管道工文件和会话信息如下:

#' Check which EDU territory encompasses an address
#' @param x longitude of the location
#' @param y latitude of the location
#' @get /intersection
#' @serializer json

function(x,y) {
  
  library(tidyverse)
  library(sf)
  
  st_read_edu <- sf::st_read('https://services3.arcgis.com/bWPjFyq029ChCGur/arcgis/rest/services/California_Electric_Utility_Service_Areas/FeatureServer/0/query?where=1%3D1&objectIds=&time=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&units=esriSRUnit_Meter&returnGeodetic=false&outFields=*&returnGeometry=true&returnCentroid=false&featureEncoding=esriDefault&multipatchOption=xyFootprint&maxAllowableOffset=&geometryPrecision=&outSR=&datumTransformation=&applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&returnQueryGeometry=false&returndistinctValues=false&cacheHint=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&resultOffset=&resultRecordCount=&returnZ=false&returnM=false&returnExceededLimitFeatures=true&quantizationParameters=&sqlFormat=none&f=pgeojson&token=')
  
  points <- data.frame(x = x,sparse = FALSE) %>%
    as.data.frame() %>%
    dplyr::mutate(edu = st_read_edu$Utility) %>%
    dplyr::rename(within_edu_territory = V1) %>%
    filter(within_edu_territory == TRUE)
  
  return(intersection)

}
R version 3.6.2 (2019-12-12)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Catalina 10.15.3

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  Grdevices utils     datasets  methods   base     

other attached packages:
 [1] sf_0.9-5        forcats_0.5.0   stringr_1.4.0   dplyr_1.0.0     purrr_0.3.4    
 [6] readr_1.3.1     tidyr_1.1.0     tibble_3.0.3    ggplot2_3.3.2   tidyverse_1.3.0

loaded via a namespace (and not attached):
 [1] webutils_1.1       tidyselect_1.1.0   haven_2.3.1        swagger_3.32.5    
 [5] colorspace_1.4-1   vctrs_0.3.4        generics_0.0.2     rlang_0.4.7       
 [9] e1071_1.7-3        later_1.1.0.1      pillar_1.4.6       glue_1.4.2        
[13] withr_2.2.0        DBI_1.1.0          dbplyr_1.4.2       modelr_0.1.5      
[17] readxl_1.3.1       lifecycle_0.2.0    munsell_0.5.0      gtable_0.3.0

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...