问题描述
我正在尝试使用利用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 (将#修改为@)