conversion des coordonnées d’une couche shp en matrice pour persp()

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

Damien Thiriet
Messages : 3
Enregistré le : 11 Jan 2010, 21:16
Contact :

conversion des coordonnées d’une couche shp en matrice pour persp()

Messagepar Damien Thiriet » 05 Juil 2016, 16:53

Bonjour,


Je souhaiterais faire une représentation graphique de mes données en histogramme 3D projeté sur une carte en perspective.
Ces données sont enregistrées dans une base spatialite
J’ai trouvé divers exemples sur le net, dont le
topo très complet de Vinatier et Bailly sur les cartes

J’ai pu faire mes histogrammes en utilisant le paquet plot3D à partir d’un export des coordonnées d’une couche spatialite point (longitude, latitude, population). J’utilise un export en csv depuis spatialite car je suis plus à l’aise avec cela qu’avec du R pur

Code : Tout sélectionner

   h39 <- read.table("/tmp/diff_hsil.csv",sep = "|", stringsAsFactors = FALSE,col.names = c ("x","y","pop","ratio"))
   scatter3D(h39$x,h39$y,h39$pop,type="h",colvar=h39$ratio,
   NAcol="white",theta=0,phi=10,zlab="population",ticktype="detailed",
   bty="bl",xlab="",zlim=c(0,30000),expand=0.6)
 


Là où je butte sérieusement, c’est pour projeter un fond de carte (une couche vectorielle shp avec les villes). Je voudrais faire quelque chose de similaire à ce qui est fait sur le vignoble dans le topo de Fabrice Vinatier et Jean-Stéphane Bailly. En simplifié, puisque tous les points auraient une altitude de 0.
J’arrive à charger sans problème ma couche shp

Code : Tout sélectionner

library(rgdal)
library(sp)
library(maptools)

wigurb <- readOGR("/home/dthiriet/cartographie/hsil/vecteurs",
                  "wig_urbain", encoding="UTF-8",
                  stringsAsFactors = FALSE)

Mais je suis incapable d’utiliser la fonction persp() ou une de ses dérivées pour parvenir à mes fins car je butte sur un problème apparemmant trop simple pour être expliqué sur les forums que j’ai consultés. L’aide de persp() dit:
z: a matrix containing the values to be plotted (‘NA’s are
allowed). Note that ‘x’ can be used instead of ‘z’ for
convenience.

Or je ne sais pas créér une matrice de type X Y 0 avec X comme longitude, Y comme latitude et 0 comme altitude à partir d’un objet de type SpatialDataFrame (et, pour être franc, à partir de la plupart des objets). La plupart des paquets de visualisation 3D développent la fonction persp(), donc je n’ai pu contourner le problème.

Pourriez-vous m’aider sur ce point qui me bloque depuis une bonne dizaine d’heures?
Je précise qu’à ma connaissance il n’y a pas d’alternative libre, gnuplot dont j’ai consulté l’aide en desespoir de cause n’ayant pas de fonction pour représenter les polygones.

Merci d’avance

Retourner vers « Questions en cours »

Qui est en ligne

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