我正在使用reverse_geo()函数来获取油井列表所属的州。问题是有8万口井,这个过程变得非常缓慢。因此,为了加快搜索速度,我只想获取子区域,因为它是我需要的唯一数据。我怎样才能做到这一点?
我的代码是:
library(readxl)
info_pozos <- read_excel("C:/Users/Kevin/Downloads/info_pozos.xlsx")
library(dplyr, warn.conflicts = FALSE)
library(tidygeocoder)
reverse <- info_pozos %>%
reverse_geocode(lat = coordenaday, long = coordenadax, method = 'arcgis',
address = address_found, full_results = FALSE)
View(reverse)
我预计至少可以获得几个小时的时间。
这里的瓶颈不是地理粒度而是 对地理编码服务的 API 请求。一些地理编码服务
tidygeocoder
支持的具有批处理功能,
应该会加快这个过程。
不过,我推荐另一种策略:
假设油井在美国,您可以使用
tigris
套餐
从 CENSUS Tiger Line 服务获取分区几何形状。 sf
包可用于通过 st_join()
执行地理连接。
对于下面的示例,我下载了HIFLD 美国 1,506,228 口油气井的数据。 (该数据已经包含 州专栏。为了举例,我们忽略该列。) 在我的机器上执行
st_join()
大约需要 15 秒
数据集中的所有井。
library(tidyverse)
library(tigris)
library(sf)
options(tigris_use_cache = TRUE)
# Obtain subregions/divisions with `tigris::divisions()`
# and rename NAME column to division, drop other non-geometry columns
us_devisions <-
divisions() |>
select(division = NAME)
# https://opendata.arcgis.com/api/v3/datasets/17c5ed5a6bd44dd0a52c616a5b0cacca_0/downloads/data?format=csv&spatialRefId=3857&where=1%3D1
wells <-
read_csv("Oil__and__Natural__Gas__Wells.csv")
# drop some of the columns and turn well data into an `sf` object
wells_sf <-
wells |>
select(ID, NAME, LONGITUDE, LATITUDE) |>
st_as_sf(coords = c("LONGITUDE", "LATITUDE"),
crs = st_crs(us_devisions))
# perform geographic join
system.time({
res <-
st_join(wells_sf, us_devisions, join = st_within)
})
#> user system elapsed
#> 15.013 0.336 15.371
res
#> Simple feature collection with 1506238 features and 3 fields
#> Geometry type: POINT
#> Dimension: XY
#> Bounding box: xmin: -160.0238 ymin: 25.88125 xmax: -74.45766 ymax: 71.0696
#> Geodetic CRS: NAD83
#> # A tibble: 1,506,238 × 4
#> ID NAME geometry division
#> * <chr> <chr> <POINT [°]> <chr>
#> 1 W220000001 RRBB NAB PXY RA SU;J L SCALES (-93.55748 32.06496) West South Ce…
#> 2 W220000002 P SUHH;J B BARR 28 (-93.90817 32.08437) West South Ce…
#> 3 W220000003 HOSS RB SUA;POLAND (-92.74102 32.651) West South Ce…
#> 4 W220000004 LODWICK LUMBER COMPANY (-93.47957 32.60635) West South Ce…
#> 5 W220000005 SL 1367 (-90.17218 29.06883) <NA>
#> 6 W220000006 THE LOUISIANA FRUIT COMPANY (-89.36671 29.23455) West South Ce…
#> 7 W220000007 CONTINENTAL SECURITIES (-93.48068 32.62225) West South Ce…
#> 8 W220000008 LR CIB 32A 8 RA SU;SL 1450 (-90.34038 29.26782) <NA>
#> 9 W220000009 DL OPERC 2 RA SU;SCHWING L&S E (-91.32461 29.79531) West South Ce…
#> 10 W220000010 HOSS A SUJJ;WOODARD-WALKER L (-93.14482 32.48034) West South Ce…
#> # ℹ 1,506,228 more rows