Est-ce que quelqu'un sait s'il y a un outil dans R pour trouver la hauteur au-dessus du niveau de la mer d'un emplacement, compte tenu de la latitude et de la longitude? P>
4 Réponses :
Il existe des packages r tels que RCURL qui permettent des requêtes Web. Il existe également des ressources Web, d'autres spécifications nécessiteront .... Eh bien, ... plus de détails. P>
http://gisdata.usgs.net/xmlwebservices2/elevation_service.asmx? op = getelevation p>
Mise à jour: EarthTools n'existe plus, cette réponse est obsolète. Je recommande la réponse de SpaCedman à la place.
Comme Dwin dit, il y en a deux parties: trouver une bonne source de données avec un service Web, puis l'analyser dans R. Cette réponse utilise le EarthTools.org Code> Service . P>
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)))
Ce que vous avez semblé assez intéressant et je l'ai donc essayé sur une lacune et j'ai connu une ville Link . J'ai utilisé latitude <- 41.25 code> &
longitude <- -77.3 code> céder 293 non 597 comme prévu. Suis-je en utilisant cela de manière incorrecte?
Le problème est probablement lié à la qualité des données. Les hauteurs au-dessus du niveau de la mer sont données à 3 seconde résolution d'arc (environ 90 m) selon la page de Terre Linked Terre. Dans 90m, vous pouvez avoir beaucoup de colline, alors ne vous attendez pas à une précision parfaite.
De plus, 41,25 degrés ne sont pas identiques à 41deg, 25 secondes car il n'y a que 60 secondes dans un degré. En utilisant le bon emplacement, le service renvoie 568 m.
Merci. Ce n'est pas mon domaine de recherche, mais la solution R semblait assez intéressante. Ignorement, je pensais que 41 degrés 25 '(minutes) n'était qu'une décimale. Tort! Merci pour l'information. Pour les autres comme moi (ignorants), la conversion est simple. Multipliez les minutes de 60 et c'est votre décimal. J'ai rassemblé cela de Link Merci de partage.
ou vous pouvez utiliser le package à partir de Geonames et obtenir la valeur du modèle d'élévation numérique SRTM3:
Obtenir d'abord un nom d'utilisateur Geonames en vous inscrivant à alors: p> ou le modèle GTOPO30: p> Geonames est sur le cran, alors install.backages ("Geonames") l'obtiendra. P> La différence entre ces deux modèles est parce qu'elles ne sont que des approximations basées sur des données satellitaires. Ne vous attendez pas à identifier les montagnes de ceci. P> p> geonames.org code>. Puis réglez-le: p>
C'est pourquoi je l'ai écrit :) - Le paquet Geonames!
Je reçois le message que j'ai besoin de passer mon nom d'utilisateur. J'ai trouvé geonames.org/export/web-services.html#srtm3 Mais cela ne dit pas comment faire cela à travers la fonction GNSRTM3 (et cela ne semble pas que la fonction puisse prendre le nom d'utilisateur comme argument)
@Davidlebauer: ajoutez cette commande avant d'exécuter la fonction: Options (GeonamesSusername = "YourUsername")
@Spacedman est cette fonction obsolète maintenant? Ça dit. Erreur dans URL (URL, OPEN = "R"): impossible d'ouvrir la connexion à "http://api.geonames.org/srtm3json?lat=na&lng=na& code> Cela ne fonctionne même pas sur Données factices..same erreur
@BiotechGeek travaille toujours pour moi, mais depuis 2012, vous avez besoin d'un nom d'utilisateur pour l'API - Edit Terminé!
Vous pouvez accéder à des données d'élévation via Google Maps Elevation API. Et dans R, vous pouvez utiliser ceci via mon Pour utiliser Google Maps API Vous avez besoin d'une touche API P> Googleway CODE> Package
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"
Vous voulez trouver ce que l'altitude d'un emplacement donné sur la surface de la Terre est?