ich arbeite in einer glänzenden App, die Sie Orte wissen läßt, wo es angenehm sein könnte für Sie zu leben, ist dies die Arbeits App richtig kennen:Karte nicht mit Faltblatt und Raster in glänzendem app macht
Ich mag es so weit, aber ich würde wirklich lieber eine Broschüre Map, wo Sie anstelle einer statischen Karte zoomen könnte, aber bis jetzt habe ich eine Menge Probleme mit dem Raster gerendert oder aktualisiert von der Prospektpaket. Die Github-Repository ist dies ein, wenn Sie die Dateien benötigen repository
Dies ist der Code der App ist jetzt Server:
library(shiny)
library(raster)
library(rworldmap)
library(rgdal)
library(dplyr)
data("countriesCoarse")
uno <- readRDS("uno.rds")
World <- getData('worldclim', var='bio', res=10)
cities <- readRDS("cities.rds")
shinyServer(function(input, output) {
output$distPlot <- renderPlot({
uno[World[[10]] > ifelse(input$degrees == "Celcius", (input$MaxTempC*10), (((input$MaxTempF-32)*5/9)*10))] <- NA
uno[World[[11]] < ifelse(input$degrees == "Celcius", (input$MinTempC*10), (((input$MinTempF-32)*5/9)*10))] <- NA
uno[World[[1]] < ifelse(input$degrees == "Celcius", min(input$RangeTempC*10), min(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[1]] > ifelse(input$degrees == "Celcius", max(input$RangeTempC*10), max(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[12]] < ifelse(input$degrees == "Celcius", min(input$RangePPC), min(input$RangePPF*25.4))] <- NA
uno[World[[12]] > ifelse(input$degrees == "Celcius", max(input$RangePPC), max(input$RangePPF*25.4))] <- NA
plot(uno, col ="red", legend = FALSE)
plot(countriesCoarse, add = TRUE)
})
output$downloadPlot <- downloadHandler(
filename = function() { paste("WhereToLive", '.png', sep='') },
content = function(file) {
png(file)
uno[World[[10]] > ifelse(input$degrees == "Celcius", (input$MaxTempC*10), (((input$MaxTempF-32)*5/9)*10))] <- NA
uno[World[[11]] < ifelse(input$degrees == "Celcius", (input$MinTempC*10), (((input$MinTempF-32)*5/9)*10))] <- NA
uno[World[[1]] < ifelse(input$degrees == "Celcius", min(input$RangeTempC*10), min(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[1]] > ifelse(input$degrees == "Celcius", max(input$RangeTempC*10), max(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[12]] < ifelse(input$degrees == "Celcius", min(input$RangePPC), min(input$RangePPF*25.4))] <- NA
uno[World[[12]] > ifelse(input$degrees == "Celcius", max(input$RangePPC), max(input$RangePPF*25.4))] <- NA
plot(uno, col ="red", legend = FALSE)
plot(countriesCoarse, add = TRUE)
dev.off()
})
output$visFun <- renderDataTable({
uno[World[[10]] > ifelse(input$degrees == "Celcius", (input$MaxTempC*10), (((input$MaxTempF-32)*5/9)*10))] <- NA
uno[World[[11]] < ifelse(input$degrees == "Celcius", (input$MinTempC*10), (((input$MinTempF-32)*5/9)*10))] <- NA
uno[World[[1]] < ifelse(input$degrees == "Celcius", min(input$RangeTempC*10), min(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[1]] > ifelse(input$degrees == "Celcius", max(input$RangeTempC*10), max(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[12]] < ifelse(input$degrees == "Celcius", min(input$RangePPC), min(input$RangePPF*25.4))] <- NA
uno[World[[12]] > ifelse(input$degrees == "Celcius", max(input$RangePPC), max(input$RangePPF*25.4))] <- NA
cities$exists <- extract(uno, cities[,2:3])
cities <- filter(cities, exists == 1)
cities <- cities[,c(1,4,5,6)]
cities <- filter(cities, pop > min(as.numeric(as.character(input$Population))))
cities <- filter(cities, pop < max(as.numeric(as.character(input$Population))))
cities
})
output$downloadData <- downloadHandler(
filename = function() { paste("cities", '.csv', sep='') },
content = function(file) {
uno[World[[10]] > ifelse(input$degrees == "Celcius", (input$MaxTempC*10), (((input$MaxTempF-32)*5/9)*10))] <- NA
uno[World[[11]] < ifelse(input$degrees == "Celcius", (input$MinTempC*10), (((input$MinTempF-32)*5/9)*10))] <- NA
uno[World[[1]] < ifelse(input$degrees == "Celcius", min(input$RangeTempC*10), min(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[1]] > ifelse(input$degrees == "Celcius", max(input$RangeTempC*10), max(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[12]] < ifelse(input$degrees == "Celcius", min(input$RangePPC), min(input$RangePPF*25.4))] <- NA
uno[World[[12]] > ifelse(input$degrees == "Celcius", max(input$RangePPC), max(input$RangePPF*25.4))] <- NA
cities$exists <- extract(uno, cities[,2:3])
cities <- filter(cities, exists == 1)
cities <- filter(cities$pop > min(input$Population))
cities <- filter(cities$pop < max(input$Population))
cities <- cities[,c(1,4,5,6)]
write.csv(cities, file)
}
)
})
UI:
library(shiny)
library(raster)
library(rworldmap)
library(rgdal)
data("countriesCoarse")
shinyUI(fluidPage(
titlePanel("Where should you live according to your climate preferences?"),
sidebarLayout(
sidebarPanel(
h3("Select your climate preferences"),
p("Using worldclim database, and knowing your climate prefeneces, you can now using this tool get an idea of where in the world you should live."),
p("Just use the sliders to anwer the simple questions we ask and you will get a map together with a downloadable table of where the climate suits you."),
selectInput(inputId = "degrees", label = "Temp units:", choices =
c("Celcius"= "Celcius",
"Fahrenheit" = "Fahrenheit")),
submitButton("Update View", icon("refresh")),
conditionalPanel(condition = "input.degrees == 'Celcius'",
sliderInput(inputId = "MaxTempC",
label = "What's the average maximum temperature you want to endure during the summer?",
min = 0,
max = 50,
value = 30),
sliderInput(inputId = "MinTempC",
label = "What's the average minimum temperature you want to endure during the winter?",
min = -40,
max = 60,
value = 0),
sliderInput(inputId = "RangeTempC",
label = "What's your prefered temperature range?",
min = -10,
max = 30,
value = c(0, 20)),
sliderInput(inputId = "RangePPC",
label = "What's your prefered precipitation range?",
min = 0,
max = 5000,
value = c(0, 5000))),
conditionalPanel(condition = "input.degrees == 'Fahrenheit'",
sliderInput(inputId = "MaxTempF",
label = "What's the average maximum temperature you want to endure during the summer?",
min = 0,
max = 120,
value = 90),
sliderInput(inputId = "MinTempF",
label = "What's the average minimum temperature you want to endure during the winter?",
min = -40,
max = 60,
value = 32),
sliderInput(inputId = "RangeTempF",
label = "What's your prefered temperature range?",
min = -40,
max = 90,
value = c(32, 70)),
sliderInput(inputId = "RangePPF",
label = "What's your prefered precipitation range?",
min = 0,
max = 200,
value = c(0, 200))),
sliderInput(inputId = "Population",
label = "how big of a town do you want to live in (Population)?",
min = 0,
max = 20000000,
value = c(0, 20000000, by = 1)))
,
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot"),
downloadButton('downloadPlot', 'Download Plot'),
dataTableOutput("visFun"),
downloadButton('downloadData', 'Download Table')
)
)
))
So weit so gut, aber wenn Ich versuche, es zu ändern, um die Broschüre Karte zu verwenden, es funktioniert nicht sehr gut, in der Tat erscheint die Broschüre Karte nicht, ich habe es versucht:
Server:
library(shiny)
library(raster)
library(rworldmap)
library(rgdal)
library(dplyr)
library(leaflet)
library(sp)
data("countriesCoarse")
uno <- readRDS("uno.rds")
World <- getData('worldclim', var='bio', res=10)
cities <- readRDS("cities.rds")
shinyServer(function(input, output) {
output$map <- renderLeaflet({
uno[World[[10]] > ifelse(input$degrees == "Celcius", (input$MaxTempC*10), (((input$MaxTempF-32)*5/9)*10))] <- NA
uno[World[[11]] < ifelse(input$degrees == "Celcius", (input$MinTempC*10), (((input$MinTempF-32)*5/9)*10))] <- NA
uno[World[[1]] < ifelse(input$degrees == "Celcius", min(input$RangeTempC*10), min(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[1]] > ifelse(input$degrees == "Celcius", max(input$RangeTempC*10), max(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[12]] < ifelse(input$degrees == "Celcius", min(input$RangePPC), min(input$RangePPF*25.4))] <- NA
uno[World[[12]] > ifelse(input$degrees == "Celcius", max(input$RangePPC), max(input$RangePPF*25.4))] <- NA
l <- leaflet() %>% setView(0, 0, zoom = 1)
l <- l %>% addRasterImage(uno)
l
})
output$downloadPlot <- downloadHandler(
filename = function() { paste("WhereToLive", '.png', sep='') },
content = function(file) {
png(file)
uno[World[[10]] > ifelse(input$degrees == "Celcius", (input$MaxTempC*10), (((input$MaxTempF-32)*5/9)*10))] <- NA
uno[World[[11]] < ifelse(input$degrees == "Celcius", (input$MinTempC*10), (((input$MinTempF-32)*5/9)*10))] <- NA
uno[World[[1]] < ifelse(input$degrees == "Celcius", min(input$RangeTempC*10), min(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[1]] > ifelse(input$degrees == "Celcius", max(input$RangeTempC*10), max(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[12]] < ifelse(input$degrees == "Celcius", min(input$RangePPC), min(input$RangePPF*25.4))] <- NA
uno[World[[12]] > ifelse(input$degrees == "Celcius", max(input$RangePPC), max(input$RangePPF*25.4))] <- NA
plot(uno, col ="red", legend = FALSE)
plot(countriesCoarse, add = TRUE)
dev.off()
})
output$visFun <- renderDataTable({
uno[World[[10]] > ifelse(input$degrees == "Celcius", (input$MaxTempC*10), (((input$MaxTempF-32)*5/9)*10))] <- NA
uno[World[[11]] < ifelse(input$degrees == "Celcius", (input$MinTempC*10), (((input$MinTempF-32)*5/9)*10))] <- NA
uno[World[[1]] < ifelse(input$degrees == "Celcius", min(input$RangeTempC*10), min(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[1]] > ifelse(input$degrees == "Celcius", max(input$RangeTempC*10), max(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[12]] < ifelse(input$degrees == "Celcius", min(input$RangePPC), min(input$RangePPF*25.4))] <- NA
uno[World[[12]] > ifelse(input$degrees == "Celcius", max(input$RangePPC), max(input$RangePPF*25.4))] <- NA
cities$exists <- extract(uno, cities[,2:3])
cities <- filter(cities, exists == 1)
cities <- cities[,c(1,4,5,6)]
cities <- filter(cities, pop > min(as.numeric(as.character(input$Population))))
cities <- filter(cities, pop < max(as.numeric(as.character(input$Population))))
cities
})
output$downloadData <- downloadHandler(
filename = function() { paste("cities", '.csv', sep='') },
content = function(file) {
uno[World[[10]] > ifelse(input$degrees == "Celcius", (input$MaxTempC*10), (((input$MaxTempF-32)*5/9)*10))] <- NA
uno[World[[11]] < ifelse(input$degrees == "Celcius", (input$MinTempC*10), (((input$MinTempF-32)*5/9)*10))] <- NA
uno[World[[1]] < ifelse(input$degrees == "Celcius", min(input$RangeTempC*10), min(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[1]] > ifelse(input$degrees == "Celcius", max(input$RangeTempC*10), max(((input$RangeTempF-32)*5/9)*10))] <- NA
uno[World[[12]] < ifelse(input$degrees == "Celcius", min(input$RangePPC), min(input$RangePPF*25.4))] <- NA
uno[World[[12]] > ifelse(input$degrees == "Celcius", max(input$RangePPC), max(input$RangePPF*25.4))] <- NA
cities$exists <- extract(uno, cities[,2:3])
cities <- filter(cities, exists == 1)
cities <- filter(cities$pop > min(input$Population))
cities <- filter(cities$pop < max(input$Population))
cities <- cities[,c(1,4,5,6)]
write.csv(cities, file)
}
)
})
und
UI:
library(shiny)
library(raster)
library(rworldmap)
library(rgdal)
library(leaflet)
data("countriesCoarse")
shinyUI(fluidPage(
titlePanel("Where should you live according to your climate preferences?"),
sidebarLayout(
sidebarPanel(
h3("Select your climate preferences"),
p("Using worldclim database, and knowing your climate prefeneces, you can now using this tool get an idea of where in the world you should live."),
p("Just use the sliders to anwer the simple questions we ask and you will get a map together with a downloadable table of where the climate suits you."),
selectInput(inputId = "degrees", label = "Temp units:", choices =
c("Celcius"= "Celcius",
"Fahrenheit" = "Fahrenheit")),
submitButton("Update View", icon("refresh")),
conditionalPanel(condition = "input.degrees == 'Celcius'",
sliderInput(inputId = "MaxTempC",
label = "What's the average maximum temperature you want to endure during the summer?",
min = 0,
max = 50,
value = 30),
sliderInput(inputId = "MinTempC",
label = "What's the average minimum temperature you want to endure during the winter?",
min = -40,
max = 60,
value = 0),
sliderInput(inputId = "RangeTempC",
label = "What's your prefered temperature range?",
min = -10,
max = 30,
value = c(0, 20)),
sliderInput(inputId = "RangePPC",
label = "What's your prefered precipitation range?",
min = 0,
max = 5000,
value = c(0, 5000))),
conditionalPanel(condition = "input.degrees == 'Fahrenheit'",
sliderInput(inputId = "MaxTempF",
label = "What's the average maximum temperature you want to endure during the summer?",
min = 0,
max = 120,
value = 90),
sliderInput(inputId = "MinTempF",
label = "What's the average minimum temperature you want to endure during the winter?",
min = -40,
max = 60,
value = 32),
sliderInput(inputId = "RangeTempF",
label = "What's your prefered temperature range?",
min = -40,
max = 90,
value = c(32, 70)),
sliderInput(inputId = "RangePPF",
label = "What's your prefered precipitation range?",
min = 0,
max = 200,
value = c(0, 200))),
sliderInput(inputId = "Population",
label = "how big of a town do you want to live in (Population)?",
min = 0,
max = 20000000,
value = c(0, 20000000, by = 1)))
,
# Show a plot of the generated distribution
mainPanel(
leafletOutput("map", width = "100%", height = "100%"),
downloadButton('downloadPlot', 'Download Plot'),
dataTableOutput("visFun"),
downloadButton('downloadData', 'Download Table')
)
)
))
Dies wirft keinen Fehler, aber die Karte nicht zu machen, und ich habe die folgenden Warnungen
Listening on http://127.0.0.1:7231
Warning in rgdal::rawTransform(projfrom, projto, nrow(xy), xy[, 1], xy[, :
54 projected point(s) not finite
Warning in rgdal::rawTransform(projfrom, projto, nrow(xy), xy[, 1], xy[, :
54 projected point(s) not finite
Warning in rgdal::rawTransform(projfrom, projto, nrow(xy), xy[, 1], xy[, :
54 projected point(s) not finite
Danke, es scheint, dass ich noch 9 Stunden warten müssen, um zu vergeben, um die Lage sein, die Prämie, Eine weitere Sache Weißt du, wie man das Raster halbtransparent macht? –
Ich habe es tatsächlich erfunden, Opazität –