Conversion for latitude/longitude to altitude in R

前端 未结 4 1082
野趣味
野趣味 2021-02-06 02:44

Does anyone know if there is a tool in R to find the height above sea level of a location, given the latitude and longitude ?

相关标签:
4条回答
  • 2021-02-06 03:18

    There are R packages such as RCurl that allow web queries. There are also web resources, Further specfics will require .... well, ... more specifics.

    http://gisdata.usgs.net/xmlwebservices2/elevation_service.asmx?op=getElevation

    0 讨论(0)
  • 2021-02-06 03:19

    Or you can use the package that looks up from geonames, and get the value from the srtm3 digital elevation model:

    > require(geonames)
    > GNsrtm3(54.481084,-3.220625)
      srtm3       lng      lat
    1   797 -3.220625 54.48108
    

    or the gtopo30 model:

    > GNgtopo30(54.481084,-3.220625)
      gtopo30       lng      lat
    1     520 -3.220625 54.48108
    

    geonames is on CRAN so install.packages("geonames") will get it.

    The difference between these two models is because they are only approximations based on satellite data. Don't go expecting to pinpoint mountains from this.

    0 讨论(0)
  • 2021-02-06 03:29

    You can access elevation data through Google Maps Elevation API. And in R you can use this through my googleway package

    To use Google Maps API you need an API key

    library(googleway)
    
    api_key <- "your_api_key"
    
    df_locations <- data.frame(lat = c(54.481084), lon = c(-3.220625))
    
    google_elevation(df_locations = df_locations, key = api_key)
    
    # $results
    # elevation location.lat location.lng resolution
    # 1  813.9291     54.48108    -3.220625   610.8129
    # 
    # $status
    # [1] "OK"
    
    0 讨论(0)
  • 2021-02-06 03:36

    Update: Earthtools no longer exists, so this answer is obsolete. I recommend @Spacedman's answer instead.

    As DWin said, there are two parts to this: find a good source of data with a web service, then parse it in R. This answer uses the earthtools.org service.

    library(RCurl)
    library(XML)
    
    latitude <- 52.4822
    longitude <- -1.8946
    url <- paste(
        "http://www.earthtools.org/height",
        latitude, 
        longitude,
        sep = "/"
    )
    
    page <- getURL(url)
    ans <- xmlTreeParse(page, useInternalNodes = TRUE)
    heightNode <- xpathApply(ans, "//meters")[[1]]
    (height <- as.numeric(xmlValue(heightNode)))
    
    0 讨论(0)
提交回复
热议问题