|
7 | 7 | #' @return `design_points` `data.frame` with harmonized LandIQ parcel_IDs |
8 | 8 | #' @export |
9 | 9 | get_landiq_parcel_ids <- function(design_points, parcels_file) { |
10 | | - parcel_crs <- sf::st_layers(parcels_file)[["crs"]][[1]] |
| 10 | + parcels_vect <- terra::vect(parcels_file) |
11 | 11 | pts_sf <- design_points |> |
12 | 12 | dplyr::select("id", "lat", "lon") |> |
13 | 13 | sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) |> |
14 | | - sf::st_transform(parcel_crs) |
15 | | - conn <- duckspatial::ddbs_create_conn() |
16 | | - duckspatial::ddbs_write_vector( |
17 | | - conn = conn, |
18 | | - data = pts_sf, |
19 | | - name = "design_points" |
20 | | - ) |
21 | | - duckdb::dbSendQuery( |
22 | | - conn, |
23 | | - glue::glue( |
24 | | - " |
25 | | - CREATE TABLE merged AS |
26 | | - SELECT dp.*, p.parcel_id, |
27 | | - FROM design_points dp |
28 | | - LEFT JOIN ST_Read('{parcels_file}', layer='parcels') p |
29 | | - ON ST_Within(dp.geometry, p.geom) |
30 | | - " |
31 | | - ) |
32 | | - ) |
33 | | - dp_with_parcels <- duckspatial::ddbs_read_vector( |
34 | | - conn = conn, |
35 | | - name = "merged" |
36 | | - ) |> |
37 | | - sf::st_drop_geometry(dp_parcels) |> |
38 | | - dplyr::right_join(design_points, by = "id") |
39 | | - |
| 14 | + sf::st_transform(sf::st_crs(parcels_vect)) |
| 15 | + dp_vect <- terra::vect(pts_sf) |
| 16 | + matched <- terra::intersect(dp_vect, parcels_vect) |
| 17 | + matched_sf <- sf::st_as_sf(matched) |
| 18 | + dp_with_parcels <- design_points |> |
| 19 | + dplyr::left_join(matched_sf, by = "id") |
40 | 20 | dp_with_parcels |
41 | 21 | } |
0 commit comments