superposition champ scalaire-vectoriel et carte europe avec

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Amandine Chevalier
Messages : 1
Enregistré le : 12 Nov 2007, 11:00

superposition champ scalaire-vectoriel et carte europe avec

Messagepar Amandine Chevalier » 12 Nov 2007, 13:22

Bonjour,

Désolée si la question est naive, je ne suis pas vieille sur R, et je butte sur les fonctions map, mapproj...

J’utilise un modèle météorologique, et je souhaite traiter les fichiers de sortie (netcdf) avec R. Je souhaite en particulier superposer un champ de vent (vectoriel, avec arrow.plot qui marche très bien), superposé au module du vent en couleur (image.plot), la difficulté arrive quand je veux y superposer la carte de france et celle d'europe.

Le modèle me fournit les coordonnées (lat-long) des proints de grille et les données ci dessus en chaque point de grille.

J'ai réalisé deux tests graphiques, mais je ne suis satisfaite ni de l'un ni de l'autre :

1) si je ne projette pas les lat-long de mes fichiers, et avec le code qui suit, j'ai mes champs avec les coordonnées géographiques qui marchent bien, une figure en eventail (liée à l'absence de projection), tout ca, ca roule, mais la carte ne se superpose pas...


pdf("champ_vectoriel.pdf")



image.plot(as.image(MOD_VENT_d01_t1,COORD_d01_vec_t1,
nrow=e_we_d01,ncol=e_sn_d01),zlim=c(0,20),
xlab="LONG",ylab="LAT",col=positiv_color(20))



for (i in seq(1,e_we_d01,by = arrow_ratio_d01)) {
for (j in seq(1,e_sn_d01,by = arrow_ratio_d01)) {
arrow.plot( as.vector(LONG_d01_mat_t1[i,j]),as.vector(LAT_d01_mat_t1[i,j]),
as.vector(U10_mat_t1[i,j]),as.vector(V10_mat_t1[i,j]),
arrow.ex=.03, length=.05, col='black', lwd=1)
}
}

map("world",
lwd=1,col="slategrey",add=TRUE)

dev.off()

2) en réalisant une projection, je me retrouve bien avec les champs scalaires et vectoriels, avec une grille normalisée...MAIS je ne comprends pas les nouveaux axes (ma carte d'europe qui devrait s'etndre entre -20 et 30 de longitude et 35 et 55 de latitude, se retrouve entre -0.15 et 0.15 sur l'axe des abscisses et entre -0.8 et -0.55 sur l'axe des ordonnées)...de plus, la fonction map(, avec option proj="lambert") semble bien marcher, mais là encore, j'ai un problème, en superposant map(world), map(france) et map(italy), les pays ne se situent pas d'une manière cohérente sur la carte...Voici le code utilisé :

pdf("champ_vectoriel_2.pdf")



image.plot(as.image(MOD_VENT_d01_t1,coordonnees,nrow=e_we_d01,ncol=e_sn_d01),zlim=c(0,20),xlab="LONG",ylab="LAT",col=positiv_color(20))

map("world",proj="lambert",pa=c(30,60),
regions=".",
lwd=1,col="slategrey",add=TRUE)
map("france",proj='lambert',pa=c(30,60),
lwd=0.5,col="grey",add=TRUE)
map("italy",proj='lambert',pa=c(30,60),
lwd=0.5,col="grey",add=TRUE)


for (i in seq(1,e_we_d01,by = arrow_ratio_d01)) {
for (j in seq(1,e_sn_d01,by = arrow_ratio_d01)) {

arrow.plot( as.vector(longitude_mat[i,j]),as.vector(latitude_mat[i,j]),
as.vector(U10_mat_t1[i,j]),as.vector(V10_mat_t1[i,j]),
arrow.ex=.03, length=.05, col='black', lwd=1)
}
}


dev.off()

Sauriez vous m’aider et m’indiquer comment dans le second cas, avoir des coordonnées en lat-long ? Et quelles options je dois mettre à map() pour que je puisse avoir une représentation exacte et surtout localisée correctement de mes champs de vent et de module ? La carte du monde a l'air satisfaisante mais je ne sais pas quel crédit donner à cette carte
(et à l'option map) sachant que je ne comprends ni les axes, ni pourquoi
la carte d'italie est par exemple placée dans ce dernier cas au milieu de la méditerranée, et la carte de France est décalée vers le SE par rapport à sa position sur la carte fournie avec l'option world...



Merci d’avance pour toute aide,
j'espère avoir été assez claire dans l'exposition de mon problème...

A bientot

Amandine Chevalier

Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité