Created
September 29, 2025 18:09
-
-
Save JosiahParry/b8991af1c8f6cc23aa1346b7dc0558c4 to your computer and use it in GitHub Desktop.
preview portal feature services
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This should be in .Renviron | |
| Sys.setenv("ARCGIS_HOST" = "your-portal-host") | |
| Sys.setenv( | |
| "ARCGIS_API_KEY" = "your-api-key" | |
| ) | |
| library(arcgis) | |
| set_arc_token(auth_key(key)) | |
| # get my content items from my portal | |
| # my API key is scoped to have access to this | |
| feature_services <- arc_user_content("jparry_geosaurus") |> | |
| # filter to only Feature Services | |
| subset(type == "Feature Service") | |
| library(shiny) | |
| library(bslib) | |
| available_layers <- setNames( | |
| feature_services$id, | |
| feature_services$name | |
| ) | |
| ui <- page_sidebar( | |
| sidebar = sidebar( | |
| selectInput( | |
| "fserv_id", | |
| "Select a layer to preview", | |
| choices = available_layers | |
| ), | |
| ), | |
| card( | |
| card_header(textOutput("card_title")), | |
| card_body( | |
| tableOutput("fserv_preview") | |
| ) | |
| ) | |
| ) | |
| server <- function(input, output) { | |
| # Reactive expression to get the selected feature service data | |
| selected_data <- reactive({ | |
| req(input$fserv_id) | |
| tryCatch( | |
| { | |
| item <- arc_open(input$fserv_id) | |
| layers <- get_all_layers(item) | |
| if (length(layers) > 0) { | |
| arc_select(layers$layers[[1]], n_max = 10) | |
| } else { | |
| data.frame(Message = "No layers found in this feature service") | |
| } | |
| }, | |
| error = function(e) { | |
| data.frame(Error = paste("Failed to load data:", e$message)) | |
| } | |
| ) | |
| }) | |
| # Set the card title to the selected layer name | |
| output$card_title <- renderText({ | |
| req(input$fserv_id) | |
| selected_name <- names(available_layers)[available_layers == input$fserv_id] | |
| paste("Preview of:", selected_name) | |
| }) | |
| # Create table preview output | |
| output$fserv_preview <- renderTable({ | |
| selected_data() | |
| }) | |
| } | |
| shinyApp(ui = ui, server = server) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment