J'ai un problème avec les données spatiales. J'ai besoin d'extraire les données de température d'un fichier NetCDF; alors j'ai besoin d'associer cette température à une latitude et à une longitude donnée à un autre ensemble de latitude et de longitude contenu dans une trame de données différente. Ce est le code que je l'habitude d'extraire mes variables:Association entre deux coordonnées dans R
myfile <- nc_open(paste(wd, 'myfile.nc', sep=''))
timearr = ncvar_get(myfile, "time")
temp <- ncvar_get(myfile, 'temp_srf')
lat <- ncvar_get(myfile, 'lat_rho')
lon <- ncvar_get(myfile, 'lon_rho')
dim(temp)
[1] 27 75 52 # which means: 27 longitude * 75 latitudes * 52 time steps
J'ai choisi de travailler sur la première étape de temps de la température pour l'instant. Alors:
> t1 <- as.vector(temp[,,1])
Ensuite, je créé un data.frame dont lat, lon et la température dans la première étape de temps:
lat1 <- as.vector(lat)
lon1 <- as.vector(lon)
df1 <- as.data.frame(cbind(lon1, lat1, t1))
head(df1)
lon1 lat1 t1
1 18.15338 40.48656 13.96225
2 18.24083 40.55126 14.36726
3 18.32845 40.61589 14.53822
4 18.41627 40.68045 14.78643
5 18.50427 40.74495 14.88624
6 18.59246 40.80938 14.95925
Dans une autre trame de données (DF2) J'ai quelques points aléatoires de latitude et longitude, que je dois associer à la plus proche latitude et la longitude de la data.frame précédente:
> df2 <- read.csv(paste(id, "myfile.csv", sep=""), header=TRUE, sep=",")
> head(df2)
LONs LATs
1 14.13189 43.41072
2 14.13342 43.34871
3 14.09980 43.40822
4 14.05338 43.72771
5 13.91311 43.88051
6 13.98500 43.91164
Je pensais à obtenir la distance entre chaque point et d'obtenir une plus bas, mais je ne sais pas ho w pour le faire. Je ne suis pas sûr s'il y a d'autres solutions.
Il existe plusieurs solutions, mais cela dépend si vous avez des coordonnées planes ou projetées. Projection sont comme lat-long vous obtenez sur votre téléphone mobile ou un appareil GPS (que je soupçonne que vous avez) et sont mesurés en degrés angulaires. –
require (sp); ? spDistsN1 – mdsumner