Identify Position eines Klicks auf ein Raster in der Broschüre, in R

Ich plane eine große lat-lon NetCDFraster über ein Rleaflet map usingshinydashboard. Wenn ich auf die Karte klicke, wird ein Popup-Fenster angezeigt, in dem Zeile, Spalte, Lat-Lon-Position und der Wert des angeklickten Rasterpunkts angezeigt werden. (Siehe reproduzierbaren Code unten)

Das Problem besteht darin, dass im Raster eine Verschiebung auftritt, wenn das Raster groß genug ist. Zum Beispiel habe ich hier auf einen Punkt geklickt, der einen Wert haben sollte, aber das Ergebnis ist, dass der identifizierte Punkt der oben angegebene ist.

Ich glaube, das hat damit zu tun, dass das von @ verwendete Rastleaflet wird projiziert, während die Rohdaten, mit denen ich die Punkte identifiziere, Lat-Lon sind, da der angeklickte Punkt von @ als Lat-Lon zurückgegeben wirleaflet. Ich kann die projizierte Datei nicht verwenden depth) da die Einheiten in Metern und nicht in Grad angegeben sind! Selbst wenn ich versuchte, diese Meter in Grad umzuwandeln, bekam ich eine Verschiebung.

Hier ist ein grundlegendes ausführbares Beispiel für den Code:

#Libraries
library(leaflet)
library(raster)
library(shinydashboard)
library(shiny)

#Input data
download.file("https://www.dropbox.com/s/y9ekjod2pt09rvv/test.nc?dl=0", destfile="test.nc")
inputFile    = "test.nc"
inputVarName = "Depth"
lldepth <- raster(inputFile, varname=inputVarName)
lldepth[Which(lldepth<=0, cells=T)] <- NA #Set all cells <=0 to NA
ext <- extent(lldepth)
resol <- res(lldepth)
projection(lldepth) <- "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"

#Project for leaflet
depth <- projectRasterForLeaflet(lldepth)

#Prepare UI
sbwidth=200
sidebar <- dashboardSidebar(width=sbwidth)
body <- dashboardBody(
          box( #https://stackoverflow.com/questions/31278938/how-can-i-make-my-shiny-leafletoutput-have-height-100-while-inside-a-navbarpa
            div(class="outer",width = NULL, solidHeader = TRUE, tags$style(type = "text/css", paste0(".outer {position: fixed; top: 50px; left: ", sbwidth, "px; right: 0; bottom: 0px; overflow: hidden; padding: 0}")),
            leafletOutput("map", width = "100%", height = "100%")
            )
          )
        )
ui <- dashboardPage(
  dashboardHeader(title = "A title"),
  sidebar,
  body
)
#
#Server instance
server <- function(input, output, session) {
  output$map <- renderLeaflet({#Set extent
    leaflet()  %>%
      fitBounds(ext[1], ext[3], ext[2], ext[4])
  })

  observe({#Observer to show Popups on click
    click <- input$map_click
    if (!is.null(click)) {
      showpos(x=click$lng, y=click$lat)
    }
  })

  showpos <- function(x=NULL, y=NULL) {#Show popup on clicks
    #Translate Lat-Lon to cell number using the unprojected raster
    #This is because the projected raster is not in degrees, we cannot use it!
    cell <- cellFromXY(lldepth, c(x, y))
    if (!is.na(cell)) {#If the click is inside the raster...
      xy <- xyFromCell(lldepth, cell) #Get the center of the cell
      x <- xy[1]
      y <- xy[2]
      #Get row and column, to print later
      rc <- rowColFromCell(lldepth, cell)
      #Get value of the given cell
      val = depth[cell]
      content <- paste0("X=",rc[2],
                        "; Y=",rc[1],
                        "; Lon=", round(x, 5),
                        "; Lat=", round(y, 5),
                        "; Depth=", round(val, 1), " m")
      proxy <- leafletProxy("map")
      #add Popup
      proxy %>% clearPopups() %>% addPopups(x, y, popup = content)
      #add rectangles for testing
      proxy %>% clearShapes() %>% addRectangles(x-resol[1]/2, y-resol[2]/2, x+resol[1]/2, y+resol[2]/2)
    }
  }

  #Plot the raster
  leafletProxy("map") %>%
    addRasterImage(depth, opacity=0.8, project=FALSE, group="Example", layerId="Example", colors=colorNumeric(terrain.colors(10), values(depth), na.color = "black"))
}


print(shinyApp(ui, server))

Wie kann ich die Punkte richtig identifizieren, wenn das Raster groß ist?

EDIT: Ich wollte auch einige zusätzliche Links zu (möglicherweise) verwandten Dokumentationen oder Fragen bereitstellen:

Raster-Bild scheint verschoben zu sein, wenn für R @ eine Broschüre verwendet wirR für die Weiterleitung von Flugblättern beim Klicken auf das Rasterbildhttps: //gis.stackexchange.com/questions/183918/ist-möglich-zu-gebrauchen-einer-Rasterklick-Veranstaltung-mit-einer-interaktiven-Leaflet-MaMarker Mausklick-Ereignis in der R-Broschüre für glänzendes

Antworten auf die Frage(2)

Ihre Antwort auf die Frage