Skip to content

Retina Issue with Points & File Sizes for Self Contained Maps? #73

Open
@mrworthington

Description

@mrworthington

Hi y'all,

Currently reworking a map I made that's going to have at least ~50k points in total, with the potential for more layers. Right now, I'm trying to evaluate {rdeck} and {leafgl} and I'm currently leaning toward {leafgl} because y'all have a lot of native integration with leaflet, which enables the map to have more functionality, but I've got two issues I'm thinking through that stand out to me (Also, I'm happy to file these as two separate issues:

  1. Point Pixelation and Resolution
  2. File Size for Standalone Maps

For reference, here's links to each map:

Links to Maps

Point Pixelation and Resolution

As I've been testing out {leafgl} and {rdeck}, I've noticed a blurriness and pixelation with the points rendered by leafgl. I'm wondering what options there are to increase the resolution of the points? Here's a screenshot:

{leafgl} screenshot

Screen Shot 2022-03-29 at 11 22 31 AM

{rdeck} screenshot

Screen Shot 2022-03-29 at 12 26 33 PM

Code for leafgl point rendering

Right now, this is how I'm drawing the points with leafgl:

leafgl_map <- leaflet(health_orgs,
            options = leafletOptions(zoomControl = TRUE,
                                     preferCanvas = TRUE,
                                     minZoom = 4, maxZoom = 13,
                                     doubleClickZoom= FALSE)) |>
      addProviderTiles(providers$Stamen.TonerLite,
                       options = providerTileOptions(updateWhenZooming = FALSE,
                                                     updateWhenIdle = TRUE)) |>
      addProviderTiles(providers$Stamen.TopOSMRelief,
                       options = providerTileOptions(updateWhenZooming = FALSE, 
                                                     updateWhenIdle = TRUE, 
                                                     opacity = 0.25)) |>
      addProviderTiles(providers$Stamen.TopOSMFeatures,
                       options = providerTileOptions(updateWhenZooming = FALSE, 
                                                     updateWhenIdle = TRUE, 
                                                     opacity = 0.25)) |>
      leafgl::addGlPoints(data = h2a_df_cnty,
                          fillColor = "red",
                          fillOpacity = 0.5,
                          src = TRUE,
                          popup = ~housing_tooltip,
                          group = "H-2A Housing Sites") |>
      leafgl::addGlPoints(data = h2a_df_cnty_work,
                          fillColor = "blue",
                          fillOpacity = 0.5,
                          src = TRUE,
                          popup = ~worksite_tooltip,
                          group = "H-2A Work Sites") |>
      leafgl::addGlPoints(data = community_health_sites,
                          fillColor = "black",
                          fillOpacity = 0.5,
                          popup = popupTable(community_health_sites,
                                             row.numbers = FALSE, feature.id = FALSE, className = "health-orgs"),
                          group = "Community Health Clinic Sites")

File Size for Standalone Maps

The last thing I'm wondering about is the difference between file sizes produced for a standalone HTML version when using {leafgl} vs {rdeck}. Using the same data for each map, I used htmlwidgets::saveWidget() to create self-contained versions of the maps, like this:

htmlwidgets::saveWidget(widgetframe::frameableWidget(leafgl_map), 
                        file = "leafgl_map_explorer.html", 
                        selfcontained = TRUE, 
                        background = "white")

When I did, the {leafgl} map was roughly 56.8 MB while the {rdeck} map was 4.4 MB. Is there a way to reduce the file size of the leafgl map?

Session Info

R version 4.1.1 (2021-08-10)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Monterey 12.3

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.1-arm64/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] reactablefmtr_2.0.0  reactable_0.2.3      patchwork_1.1.1      rcartocolor_2.0.0   
 [5] viridis_0.6.2        viridisLite_0.4.0    tippy_0.1.0          mapboxapi_0.3.1     
 [9] scales_1.1.1         leaflet.extras_1.0.0 leafpop_0.1.0        leaflet_2.1.1       
[13] rdeck_0.3.0.91000    sf_1.0-7             purrr_0.3.4          tidyr_1.2.0         
[17] dplyr_1.0.8          readr_2.1.2          sever_0.0.7          ggiraph_0.8.2       
[21] waiter_0.2.5         gfonts_0.1.3         ggplot2_3.3.5        sass_0.4.1          
[25] bslib_0.3.1          shiny_1.6.0         

loaded via a namespace (and not attached):
 [1] httr_1.4.2          tools_4.1.1         utf8_1.2.2          R6_2.5.1           
 [5] KernSmooth_2.23-20  DBI_1.1.2           colorspace_2.0-3    raster_3.5-15      
 [9] withr_2.5.0         sp_1.4-6            tidyselect_1.1.2    gridExtra_2.3      
[13] curl_4.3.2          compiler_4.1.1      cli_3.2.0           geojsonsf_2.0.2    
[17] xml2_1.3.3          classInt_0.4-3      proxy_0.4-26        stringr_1.4.0      
[21] systemfonts_1.0.4   digest_0.6.29       svglite_2.1.0       base64enc_0.1-3    
[25] jpeg_0.1-9          pkgconfig_2.0.3     htmltools_0.5.2     fastmap_1.1.0      
[29] htmlwidgets_1.5.4   rlang_1.0.2         rstudioapi_0.13     httpcode_0.3.0     
[33] jquerylib_0.1.4     generics_0.1.2      jsonlite_1.8.0      crosstalk_1.2.0    
[37] magrittr_2.0.2      tidyassert_0.3.4    leafgl_0.2.1.9002   Rcpp_1.0.8.3       
[41] munsell_0.5.0       fansi_1.0.3         lifecycle_1.0.1     terra_1.5-21       
[45] stringi_1.7.6       yaml_2.3.5          snakecase_0.11.0    widgetframe_0.3.1  
[49] grid_4.1.1          promises_1.2.0.1    crayon_1.5.1        lattice_0.20-45    
[53] hms_1.1.1           magick_2.7.3        knitr_1.37          pillar_1.7.0       
[57] uuid_1.0-4          codetools_0.2-18    crul_1.2.0          glue_1.6.2         
[61] protolite_2.1.1     vctrs_0.3.8         png_0.1-7           tzdb_0.2.0         
[65] httpuv_1.6.5        gtable_0.3.0        aws.s3_0.3.21       slippymath_0.3.1   
[69] assertthat_0.2.1    xfun_0.30           mime_0.12           xtable_1.8-4       
[73] e1071_1.7-9         later_1.3.0         class_7.3-20        stylebox_0.2.0     
[77] tibble_3.1.6        aws.signature_0.6.0 units_0.8-0         ellipsis_0.3.2     
[81] brew_1.0-7 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions