From 8c443fb50814bf518e51cbcb6e066d0592c976fd Mon Sep 17 00:00:00 2001 From: David Blodgett Date: Tue, 19 Nov 2024 13:12:03 -0600 Subject: [PATCH] version update and pkgdown --- DESCRIPTION | 2 +- docs/404.html | 6 +- docs/DISCLAIMER.html | 6 +- docs/articles/geometry.html | 13 +- docs/articles/index.html | 6 +- docs/articles/ncdfgeom.html | 9 +- .../ncdfgeom_files/figure-html/plot-1.png | Bin 314943 -> 313536 bytes docs/articles/polygon_intersection.html | 233 ++++++++++--- docs/articles/timeseries.html | 15 +- docs/authors.html | 8 +- docs/index.html | 8 +- docs/news/index.html | 6 +- docs/pkgdown.yml | 6 +- .../calculate_area_intersection_weights-1.png | Bin 7240 -> 9742 bytes .../calculate_area_intersection_weights.html | 314 +++++------------- docs/reference/create_cell_geometry.html | 17 +- docs/reference/index.html | 8 +- docs/reference/read_attribute_data.html | 9 +- docs/reference/read_geometry.html | 11 +- docs/reference/read_timeseries_dsg.html | 9 +- docs/reference/write_attribute_data.html | 11 +- docs/reference/write_geometry.html | 11 +- docs/reference/write_timeseries_dsg.html | 9 +- 23 files changed, 372 insertions(+), 345 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 11181aa..195865f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: ncdfgeom Type: Package Title: 'NetCDF' Geometry and Time Series -Version: 1.2.0 +Version: 1.3.0 Authors@R: c(person("David", "Blodgett", role = c("aut", "cre"), email = "dblodgett@usgs.gov"), person("Luke", "Winslow", role = "ctb")) diff --git a/docs/404.html b/docs/404.html index 16a73ca..21aaa2c 100644 --- a/docs/404.html +++ b/docs/404.html @@ -6,7 +6,7 @@ Page not found (404) • ncdfgeom - + @@ -32,7 +32,7 @@ ncdfgeom - 1.2.0 + 1.3.0 @@ -109,7 +109,7 @@

Page not found (404)

-

Site built with pkgdown 2.0.7.

+

Site built with pkgdown 2.0.9.

diff --git a/docs/DISCLAIMER.html b/docs/DISCLAIMER.html index 424a601..db4cf1d 100644 --- a/docs/DISCLAIMER.html +++ b/docs/DISCLAIMER.html @@ -1,5 +1,5 @@ -Disclaimer • ncdfgeomDisclaimer • ncdfgeom @@ -17,7 +17,7 @@ ncdfgeom - 1.2.0 + 1.3.0 @@ -87,7 +87,7 @@

Disclaimer

-

Site built with pkgdown 2.0.7.

+

Site built with pkgdown 2.0.9.

diff --git a/docs/articles/geometry.html b/docs/articles/geometry.html index 05a7031..414736f 100644 --- a/docs/articles/geometry.html +++ b/docs/articles/geometry.html @@ -6,7 +6,7 @@ Reading and Writing NetCDF-CF Geometry • ncdfgeom - + @@ -33,7 +33,7 @@ ncdfgeom - 1.2.0 + 1.3.0 @@ -55,6 +55,9 @@
  • Reading and Writing NetCDF-CF Geometry
  • +
  • + Area Weight Generation for Polygon Intersections +
  • Reading and Writing Timeseries
  • @@ -131,7 +134,7 @@

    Load Spatial Data
    -(vars <- ncmeta::nc_vars(example_file))
    +(vars <- ncmeta::nc_vars(example_file))
     #> # A tibble: 5 × 5
     #>      id name         type      ndims natts
     #>   <int> <chr>        <chr>     <int> <int>
    @@ -146,7 +149,7 @@ 

    Load Spatial Data= "station", variables = vars$name) -> example_file

    Now the NetCDF file looks like:

    -
    #> netcdf file69986203fbb {
    +
    #> netcdf file63806c813359 {
     #> dimensions:
     #>  maxStrlen64 = 64 ;
     #>  station = 2 ;
    @@ -681,7 +684,7 @@ 

    Multiple MultiPolygons wi

    -

    Site built with pkgdown 2.0.7.

    +

    Site built with pkgdown 2.0.9.

    diff --git a/docs/articles/index.html b/docs/articles/index.html index a3104bb..05de0fe 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -1,5 +1,5 @@ -Articles • ncdfgeomArticles • ncdfgeom @@ -17,7 +17,7 @@ ncdfgeom - 1.2.0 + 1.3.0 @@ -87,7 +87,7 @@

    All vignettes

    -

    Site built with pkgdown 2.0.7.

    +

    Site built with pkgdown 2.0.9.

    diff --git a/docs/articles/ncdfgeom.html b/docs/articles/ncdfgeom.html index 34de8e3..e5586d1 100644 --- a/docs/articles/ncdfgeom.html +++ b/docs/articles/ncdfgeom.html @@ -6,7 +6,7 @@ NetCDF-CF Geometry and Timeseries Tools for R • ncdfgeom - + @@ -33,7 +33,7 @@ ncdfgeom - 1.2.0 + 1.3.0 @@ -55,6 +55,9 @@
  • Reading and Writing NetCDF-CF Geometry
  • +
  • + Area Weight Generation for Polygon Intersections +
  • Reading and Writing Timeseries
  • @@ -538,7 +541,7 @@

    Read Timeseries and Geometry f

    -

    Site built with pkgdown 2.0.7.

    +

    Site built with pkgdown 2.0.9.

    diff --git a/docs/articles/ncdfgeom_files/figure-html/plot-1.png b/docs/articles/ncdfgeom_files/figure-html/plot-1.png index c87f77b828c8a9130432e62d82ff0752b95c6eb4..c1509755c6cd02fac62534a88c948a730e46f96b 100644 GIT binary patch literal 313536 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�b@RFR7XpObDONukx@peLHOOyobM3!j zTIwNip&T4p@#~3P+uXcz5Tfepk)=jVd2ny{>S${fbW@K>7$I1*vj-LYKHoo>{mAR} za{cVn&C`a0j*NNde#24jS|m9p6m5kvGN6~4+fr0A!?!R+6S`$uHjI8P zzQu>Ogba%12?iZLC%eo5{)h@LB|SY$Q*-n0`kI=W_vg3L|89Hxh%RIRb(cA#?cC92 zC$+Cn=H#kE6w*9llC44_6fn=)&wG5%D{F*_^kyw7arps7h~ohRsJzO8Jbq_gM`T%Q z-B^>q?Y1~WLx4l#$C|6^k(uI37pZFD`RfNVpmbxmD|rxODEsB9lJrODrS+u`3oPeo z$a3hyLD*vKZ>E|3k(&6zOoWC8#MG*m?VhOEyG1bP-HjccgpI=V%H79?qCC2tT33ZR zGR}p@G+QaWM2ivT(*MH}TiB;5tK?8-^S+FX8hC1NW&Kv=u6ArX5 zW4at}g4;u1Zu4t!+@AO^mkhgXzyk=W{0mJ@Lsvl_+i7j8$;rzi2ZszTPfkvdUFX@q zrCFJR{^gZ5b#4p!HOb}IWUTQ6JsBApgRdPy*K-Z8oNSc-(h@SZ+np{Iq{4GVo5^g4 z@WBfCCM+3(IvF@|q&+kXxq40WB`324E!Q$%S38{>iAyR1OX*9-4++zVlJ-WguFl;# z{WKfosDVVi5?CNy1^CEy@{>`)L4K3*D!}Q8woc@f^k+K9)RHm_QN1ZwnCaG6v*4VA zqIkyN_Cf`y!-EE?@Pu4TIWp^V`-J zcaHGT1KjqJ0DRg_{{L`gUdp9EQhc~sj%Q#bJvo!!%}w~Rcb0X{_3Fz1v9JR&kj0YK ze2omS!O=os04;kXmz=`3y&I?cAU9?fb{0)VE;A<}bWb)}4p54_0JA}h zd$p;SdwuWCE8=C`Bg(#rfcMkcs?+LuxRvk&?3Wo9bJjBvowm=f#5VV>6EnTswl|(@ z_fAskR;R6AxuKO7#

    With weights calculated, we can do a little investigation into the differences.

    -
    +
     
     weights$diff <- weights$w - weights$gdptools_wght
     
     # make sure nothing is way out of whack
     max(weights$diff, na.rm = TRUE)
    -#> [1] 0.0000009205585
     
     # ensure the weights generally sum as we would expect.
     sum(weights$gdptools_wght, na.rm = TRUE)
    -#> [1] 25
     sum(weights$w, na.rm = TRUE)
    -#> [1] 25
     length(unique(na.omit(weights$huc8)))
    -#> [1] 25
     
     # see how many NA values we have in each.
     sum(is.na(weights$w))
    -#> [1] 183
     sum(is.na(weights$gdptools_wght))
    -#> [1] 183
     
     # look at cases where gptools has NA and ncdfgeom does not
    -weights[is.na(weights$gdptools_wght),]
    -#> # A tibble: 183 × 5
    -#>    huc12        huc8      w gdptools_wght  diff
    -#>    <chr>        <chr> <dbl>         <dbl> <dbl>
    -#>  1 011000050101 NA       NA            NA    NA
    -#>  2 011000050201 NA       NA            NA    NA
    -#>  3 011000050202 NA       NA            NA    NA
    -#>  4 011000050203 NA       NA            NA    NA
    -#>  5 011000050305 NA       NA            NA    NA
    -#>  6 011000050501 NA       NA            NA    NA
    -#>  7 011000050504 NA       NA            NA    NA
    -#>  8 020200030604 NA       NA            NA    NA
    -#>  9 020200030801 NA       NA            NA    NA
    -#> 10 020200030802 NA       NA            NA    NA
    -#> # ℹ 173 more rows
    +weights[is.na(weights$gdptools_wght) & !is.na(weights$w),]
    +

    The following example illustrates the nuances between normalized and +non-normalized area weights and shows more specifically how area weight +intersection calculations can be accomplished.

    +

    The set of polygons are a contrived but useful for the sake of +demonstration.

    +
    +
    +library(dplyr)
    +library(sf)
    +library(ncdfgeom)
    +
    +g <- list(rbind(c(-1,-1), c(1,-1), c(1,1), c(-1,1), c(-1,-1)))
    +
    +blue1 = sf::st_polygon(g) * 0.8
    +blue2 = blue1 + c(1, 2)
    +blue3 = blue1 * 1.2 + c(-1, 2)
    +
    +pink1 = sf::st_polygon(g)
    +pink2 = pink1 + 2
    +pink3 = pink1 + c(-0.2, 2)
    +pink4 = pink1 + c(2.2, 0)
    +
    +blue = sf::st_sfc(blue1,blue2,blue3)
    +
    +pink = sf::st_sfc(pink1, pink2, pink3, pink4)
    +
    +plot(c(blue,pink), border = NA)
    +plot(blue, border = "#648fff", add = TRUE)
    +plot(pink, border = "#dc267f", add = TRUE)
    +
    +blue <- sf::st_sf(blue, data.frame(idblue = c(1, 2, 3)))
    +pink <- sf::st_sf(pink, data.frame(idpink = c(7, 8, 9, 10)))
    +
    +text(sapply(sf::st_geometry(blue), \(x) mean(x[[1]][,1]) + 0.4),
    +     sapply(sf::st_geometry(blue), \(x) mean(x[[1]][,2]) + 0.3),
    +     blue$idblue, col = "#648fff")
    +
    +text(sapply(sf::st_geometry(pink), \(x) mean(x[[1]][,1]) + 0.4),
    +     sapply(sf::st_geometry(pink), \(x) mean(x[[1]][,2])),
    +     pink$idpink, col = "#dc267f")
    +
    +sf::st_agr(blue) <- sf::st_agr(pink) <- "constant"
    +sf::st_crs(pink) <- sf::st_crs(blue) <- sf::st_crs(5070)
    +
    +
    +(blue_pink_norm_false <- 
    +calculate_area_intersection_weights(blue, pink, normalize = FALSE))
    +

    NOTE: normalize = FALSE so weights sum to 1 per source polygon only +when a source polygon is fully covered by the target. The +non-intersecting portion is not included.

    +

    The following breaks down how to use these weights for one source +polygon.

    +
    +blue$val = c(30, 10, 20)
    +blue$area <- as.numeric(sf::st_area(blue))
    +
    +(result <- st_drop_geometry(blue) |>
    +  left_join(blue_pink_norm_false, by = "idblue"))
    +

    To calculate the value for pink-9, we would do:

    +
    +
    +((10 * 0.375 * 2.56) + (20 * 0.604167 * 3.6864)) / ((0.375 * 2.56) + (0.604167 * 3.6864))
    +

    This is saying that 0.375 of blue-3 covers pink-9 and 0.6 of blue-2 +covers pink-9. Since we are using area as the weighting method, we +multiply the fraction of each source polygon by its area and the value +we want to create an area weight for. We sum the contributions from +blue-2 and blue-3 to pink-9 and divide by the sum of the combined area +weights.

    +

    Note that because there is no contribution to 9 over some parts of +the polygon, that missing area does not appear. The intersecting areas +are 0.96 and 2.23 meaning that we are missing

    +

    4 - 0.96 - 2.23 = 0.81

    +

    and could rewrite the value for pink-9 as:

    +
    +((10 * 0.375 * 2.56) + (20 * 0.604167 * 3.6864)) + (NA * 1 * 0.81) / 
    +  ((1 * 0.81) + (0.375 * 2.56) + (0.604167 * 3.6864))
    +

    Which evaluates to NA. This is why for this operation we usually drop +NA terms!

    +

    In practice, the above can be accomplished with:

    +
    +(result <- result |>
    +  group_by(idpink) |> # group so we get one row per target
    +  # now we calculate the value for each `pink` with fraction of the area of each
    +  # polygon in `blue` per polygon in `pink` with an equation like this:
    +  summarize(
    +    new_val = sum( (val * w * area) ) / sum(w * area)))
    +

    Now let’s do the same thing but with +normalize = FALSE.

    +
    +
    +(blue_pink_norm_true <-
    +calculate_area_intersection_weights(select(blue, idblue), pink, normalize = TRUE))
    +

    NOTE: normalize = TRUE so weights sum to 1 per target polygon. +Non-overlap is ignored as if it does not exist.

    +

    The following breaks down how to use these weights for one source +polygon.

    +
    +(result <- st_drop_geometry(blue) |>
    +    left_join(blue_pink_norm_true, by = "idblue"))
    +

    To calculate the value for pink-9, we would do:

    +
    +((10 * 0.24) + (20 * 0.5568)) / (0.24 + (0.5568))
    +

    This is saying that the portion of pink-9 that should get the value +from blue-2 is 0.3 and the portion of pink-9 that should get the value +from blue-3 is 0.7. In this form, our weights are transformed to +includethe relative area of the source polygons.

    +

    As shown above as well, the calculation can be accomplished with:

    +
    +(result <- result |>
    +    group_by(idpink) |> # group so we get one row per target
    +    # now we calculate the value for each `pink` with fraction of the area of each
    +    # polygon in `blue` per polygon in `pink` with an equation like this:
    +    summarize(
    +      new_val = sum( (val * w) ) / sum(w)))
    +

    We can look at a more typical arrangement of polygons and look at +this a different way.

    +

    Let’s also look at the values.

    +
    +# say we have data from `blue` that we want sampled to `pink`.
    +# this gives the percent of each `blue` that intersects each `pink`
    +
    +(blue_pink <- calculate_area_intersection_weights(
    +  select(blue, idblue), select(pink, idpink), normalize = FALSE))
    +
    +# NOTE: `w` sums to 1 per `blue` in all cases
    +
    +summarize(group_by(blue_pink, idblue), w = sum(w))
    +
    +# Since normalize is false, we apply weights like:
    +st_drop_geometry(blue) |>
    +  left_join(blue_pink, by = "idblue") |>
    +  mutate(blue_areasqkm = 1.5 ^ 2) |> # add area of each polygon in `blue`
    +  group_by(idpink) |> # group so we get one row per `pink`
    +  # now we calculate the value for each b with fraction of the area of each
    +  # polygon in `blue` per polygon in `pink` with an equation like this:
    +  summarize(
    +    new_val = sum( (val * w * blue_areasqkm) ) / sum(w * blue_areasqkm))
    +
    +# NOTE: `w` is the fraction of the polygon in `blue`. We need to multiply `w` by the
    +# unique area of the polygon it is associated with to get the weighted mean weight.
    +
    +# we can go in reverse if we had data from `pink` that we want sampled to `blue`
    +
    +(pink_blue <- calculate_area_intersection_weights(
    +  select(pink, idpink), select(blue, idblue), normalize = FALSE))
    +
    +# NOTE: `w` sums to 1 per `pink` (source) only where `pink` is fully covered by `blue` (target).
    +
    +summarize(group_by(pink_blue, idpink), w = sum(w))
    +
    +# Now let's look at what happens if we set normalize = TRUE. Here we
    +# get `blue` as source and `pink` as target but normalize the weights so
    +# the area of `blue` is built into `w`.
    +
    +(blue_pink <- calculate_area_intersection_weights(
    +  select(blue, idblue), select(pink, idpink), normalize = TRUE))
    +
    +# NOTE: if we summarize by `pink` (target) `w` sums to 1 only where there is full overlap.
    +
    +summarize(group_by(blue_pink, idpink), w = sum(w))
    +
    +# Since normalize is false, we apply weights like:
    +st_drop_geometry(blue) |>
    +  left_join(blue_pink, by = "idblue") |>
    +  group_by(idpink) |> # group so we get one row per `pink`
    +  # now we weight by the percent of each polygon in `pink` per polygon in `blue`
    +  summarize(new_val = sum( (val * w) ) / sum( w ))
    +
    +# NOTE: `w` is the fraction of the polygon from `blue` overlapping the polygon from `pink`.
    +# The area of `blue` is built into the weight so we just sum the weith times value oer polygon.
    @@ -55,6 +55,9 @@
  • Reading and Writing NetCDF-CF Geometry
  • +
  • + Area Weight Generation for Polygon Intersections +
  • Reading and Writing Timeseries
  • @@ -163,7 +166,7 @@

    Reading and Writing Timeseries

    timeseries ID (which is stored as a string).
    -ncmeta::nc_dims(nc_file)
    +ncmeta::nc_dims(nc_file)
     #> # A tibble: 3 × 4
     #>      id name               length unlim
     #>   <int> <chr>               <dbl> <lgl>
    @@ -173,7 +176,7 @@ 

    Reading and Writing Timeseries

    The file has variables for latitude, longitude, altitude, timeseries IDs, and a data variable.

    -ncmeta::nc_vars(nc_file)
    +ncmeta::nc_vars(nc_file)
     #> # A tibble: 6 × 5
     #>      id name                                        type      ndims natts
     #>   <int> <chr>                                       <chr>     <int> <int>
    @@ -186,7 +189,7 @@ 

    Reading and Writing Timeseries

    The primary dimensions in the file are of length, number of time steps and number of time series.

    -ncmeta::nc_dims(nc_file)
    +ncmeta::nc_dims(nc_file)
     #> # A tibble: 3 × 4
     #>      id name               length unlim
     #>   <int> <chr>               <dbl> <lgl>
    @@ -289,7 +292,7 @@ 

    Reading and Writing Timeseries

    -

    Site built with pkgdown 2.0.7.

    +

    Site built with pkgdown 2.0.9.

    diff --git a/docs/authors.html b/docs/authors.html index eda525b..97b12c3 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -1,5 +1,5 @@ -Authors and Citation • ncdfgeomAuthors and Citation • ncdfgeom @@ -17,7 +17,7 @@ ncdfgeom - 1.2.0 + 1.3.0
    @@ -63,7 +63,7 @@
    @@ -107,7 +107,7 @@

    Citation

    -

    Site built with pkgdown 2.0.7.

    +

    Site built with pkgdown 2.0.9.

    diff --git a/docs/index.html b/docs/index.html index 88a2c6d..b03fa50 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,7 +6,7 @@ NetCDF Geometry and Time Series • ncdfgeom - + @@ -33,7 +33,7 @@ ncdfgeom - 1.2.0 + 1.3.0
    @@ -104,7 +104,7 @@

    Installationinstall.packages("ncdfgeom")

    For the latest development version:

    install.packages("remotes")
    -remotes::install_github("DOI-USGS/ncdfgeom")
    +remotes::install_github("DOI-USGS/ncdfgeom")

    Contributing @@ -174,7 +174,7 @@

    Developers

    -

    Site built with pkgdown 2.0.7.

    +

    Site built with pkgdown 2.0.9.

    diff --git a/docs/news/index.html b/docs/news/index.html index 3d55034..7e90730 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -1,5 +1,5 @@ -Changelog • ncdfgeomChangelog • ncdfgeom @@ -17,7 +17,7 @@ ncdfgeom - 1.2.0 + 1.3.0
    @@ -90,7 +90,7 @@