Je viens vers vous car je ne trouve aucune solution sur le Web concernant mon problème.
J'essaye depuis peu de réaliser une carte de la répartition de malades infectés par une espèce bactérienne donnée. Pour ce faire, je lance une page php qui interroge une base phpMyadmin et qui, après réaliser un comptage des cas par unité géographique (dans mon cas les arrondissements de Marseille), distribue les cas avec un code couleur (de plus en plus rouge selon le nombre de malades).
J'ai créé un script qui me le fait très bien si j'ouvre R mais si je passe par la commande de connexion à R sans ouverture de la console, ça ne marche plus... J'ai vérifié le code ce n'est pas un problème de traduction des variables php passées sous R
Voilà le code d'appel du script R sous php
shell_exec("Rscript.exe analyse_cartographie.R $cpM $dataM");
où $cpM contient les code postaux des arrondissements de Marseille (traduits selon les codes INSEE bien sûr) et où $dataM contient le décompte des malades par codes postaux.
Et voilà le script R
Code : Tout sélectionner
data<-data.frame(cpM,compte)
carto1<-function(data){
library("sp")
library("rgdal")
library("RColorBrewer")
library("classInt")
library("ggmap")
library("ggplot2")
library("maptools")
pathToShp<-"C:/wamp3/www/connectBDD/R/R-3.1.3/bin/shp"
ogrInfo(dsn=pathToShp,layer="COMMUNE")
comm<-readOGR(dsn=pathToShp,layer="COMMUNE",stringsAsFactors = FALSE)
tmp=comm[is.element(comm$INSEE_COM,c("13208","13205","13211","13212","13215","13207","13206","13201","13213","13210","13204","13203","13209","13202","13214","13216")),]
somme=sum(data$compte)
taille<-length(data$compte)
for (i in 1:taille){
data$pourcentage[i]<-round((data$compte[i]/somme)*100,0)
}
data$pourcentage<-as.numeric(data$pourcentage)
palette<-brewer.pal(n=9,name="YlOrRd")
data$couleur<-ifelse(data$pourcentage<=10,palette[1],ifelse(data$pourcentage>10 & data$pourcentage<=20,palette[2],ifelse(data$pourcentage>20 & data$pourcentage<=30,palette[3],ifelse(data$pourcentage>30 & data$pourcentage<=40,palette[4],ifelse(data$pourcentage>40 & data$pourcentage<=50,palette[5],ifelse(data$pourcentage>50 & data$pourcentage<=60,palette[6],ifelse(data$pourcentage>60 & data$pourcentage<=70,palette[7],ifelse(data$pourcentage>70 & data$pourcentage<=80,palette[8],ifelse(data$pourcentage>80,palette[9],"NA")))))))))
comm@data<-data.frame(tmp@data,data[match(tmp@data[,"INSEE_COM"],data$cpM), ])
legende<-as.character(c("[0-10[","[11-20[","[21-30[","[31-40[","[41-50[","[51-60[","[61-70[","[71-80[","Plus de 80%"))
plot(tmp,col=comm@data$couleur)
legend("topright",legend=legende,fill=palette,title="Patients par arrondissements (%)",cex=0.6)
p<-recordPlot()
return(p)
}
jpeg('p.jpg', width=1200, height=800)
p<-carto1(data)
p
dev.off()
data est issu de la transformation des variables une fois celles-ci envoyées par php.
Merci par avance!