简化 R 中的反向地理编码

问题描述 投票:0回答:1

我正在使用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)

我预计至少可以获得几个小时的时间。

r dplyr arcgis
1个回答
1
投票

这里的瓶颈不是地理粒度而是 对地理编码服务的 API 请求。一些地理编码服务

tidygeocoder
支持的具有批处理功能, 应该会加快这个过程。

不过,我推荐另一种策略:

  1. 获取子区域/分区的形状文件/几何形状。
  2. 执行井坐标和分区几何形状的地理连接。

假设油井在美国,您可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.