#' @title Chargement des fichiers COOP depuis la base de donnees et mise en forme pour le calcul de donnees
#'
#' @description Cette fonction charge les tables au format pret pour l'utilisation des fonctions du package, directement a partir de la Base de donnees
#'
#' @param disp nom complet (lib_disp) des sites qui seront charges, au format "'SITEA', 'SITEB'"
#' @param nom, nom de l'utilisateur dans la base de donnees GIS Coop
#' @param mdp, mot de passe de l'utilisateur
#' @param serveur, nom du serveur ("postgres-national.jouy.inra.fr" pour l'INRA, bddcalcedoine.onf.fr pour l'ONF)
#' @return une liste de data.frame:
#' - unite : data.frame correspondant a Placette mais avec une ligne par unite de suivi (placette ou sous-placette)
#' - mesure : data.frame correspondant a Mesure (campagnes) mais avec une ligne par unite de suivi (placette ou sous-placette)
#' - mesure2 : data.frame avec une ligne par placette ou sous-placette et inventaire (plusieurs lignes possible par campagne)
#' - arbre : data.frame correspondant a Arbre mais avec uniquement les circonferences et les suivis sur liste
#' - arbre_echantillon : data.frame reprenant tous les arbres echantillons 1, 2 ou 3 (placette, bandelette et sous-placette)
#' - inventaire_somme : data.frame correspondant a Inventaire_liste mais en regroupant les effectifs des bandelettes d'une meme placette
#' - surface_somme : data.frame correspondant a ss_unite_surface mais en regroupant les surfaces des bandelettes d'une meme placette
#'
#' @author Ingrid Seynave et Quentin Girard
#' @references Protocole Coop chene... document d Ingrid et Claudine
#'
#' @seealso dico.ch, load_onf_ch, load_bdd_to_xls_ch
#' @examples
#' # A venir
#'
#' @keywords function
#'
#' @include coopR-package.R
#' @family coopR
#' @import DBI
#' @import RPostgreSQL
#' @import doBy
#' @import plyr
#' @export
load_bdd_to_R_ch <- function(
disp = NULL, # lib_disp du(es) dispositif(s) a exporter
nom="ton nom", # nom de l'utilisateur dans la base de donnees GIS Coop
mdp=NULL, # mot de passe de l'utilisateur
serveur="postgres-national-priv-4.jouy.inra.fr") { # ou bddcalcedoine.onf.fr # adresse du serveur
if (is.na(disp)) {
stop("Vous devez choisir au moins 1 dispositif")
}
if (is.na(nom) | is.na(mdp) | is.na(serveur)) {
stop("Vous devez specifier les parametres de connection a la base de donnees (nom d'utilisateur, mot de passe et adresse du serveur)")
}
######## chargement des librairies et connexion a la base de donnees
# connexion a la base de donnees
drv <- dbDriver("PostgreSQL")
con <- postgresqlNewConnection(drv=drv,user=nom,password=mdp,host=serveur,dbname="coop", port=54443)
######## dataframe placette
query <- paste("SELECT DISTINCT
public.dispositif22.lib_disp,
public.placette22.id_placette as id_unite,
public.traitement22.co_traitement,
public.placette22.essence_principale1_id,
public.placette22.essence_principale2_id,
public.placette22.surface,
public.placette22.annee_plant,
public.placette22.age_plant,
public.placette22.mois_plant_id,
public.placette22.an_cernes030,
public.placette22.mois_cernes030_id,
public.placette22.nb_cernes030,
'pl' AS pl_sp
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.traitement22 ON (public.placette22.trait1_id = public.traitement22.id_traitement)
WHERE
dispositif22.lib_disp in (",disp,")", sep="")
unite_pl <- dbSendQuery(con, query)
unite_pl <- fetch(unite_pl, -1)
######## dataframe unite
query <- paste("SELECT DISTINCT
public.dispositif22.lib_disp,
public.placette22.id_placette||'_'||public.ss_placette22.lib_ss_placette as id_unite,
public.traitement22.co_traitement,
public.placette22.essence_principale1_id,
public.placette22.essence_principale2_id,
public.ss_placette22.surface,
public.placette22.annee_plant,
public.placette22.age_plant,
public.placette22.mois_plant_id,
public.placette22.an_cernes030,
public.placette22.mois_cernes030_id,
public.placette22.nb_cernes030,
'sp' AS pl_sp
FROM
public.placette22
INNER JOIN public.ss_placette22 on (public.ss_placette22.placette_id = public.placette22.id_placette)
INNER JOIN public.dispositif22 ON (public.placette22.dispositif_id = public.dispositif22.id_dispositif)
INNER JOIN public.traitement22 ON (public.placette22.trait1_id = public.traitement22.id_traitement)
WHERE
dispositif22.lib_disp in (",disp,")", sep="")
unite_sp <- dbSendQuery(con, query)
unite_sp <- fetch(unite_sp, -1)
unite <- rbind.fill(unite_pl, unite_sp)
unite$an_naissance <- with(unite, ifelse(is.na(an_cernes030),
calc_veg(annee_plant, mois_plant_id) - age_plant,
calc_veg(an_cernes030, mois_cernes030_id) - nb_cernes030))
unite <- subset(unite, select=-c(annee_plant, age_plant, mois_plant_id, mois_plant_id, an_cernes030, mois_cernes030_id, nb_cernes030))
######## dataframe mesure
query <- paste("SELECT DISTINCT
public.placette22.id_placette as id_unite,
public.mesure22.no_mesure,
public.mesure22.an_vegetation,
public.mesure22.type_suivi_id
FROM
public.placette22
INNER JOIN public.mesure22 ON (public.placette22.id_placette = public.mesure22.placette_id)
INNER JOIN public.dispositif22 ON (public.placette22.dispositif_id = public.dispositif22.id_dispositif)
WHERE
type_suivi_id in (1, 2, 3, 5, 6, 7, 10) and dispositif22.lib_disp in (",disp,")", sep="")
mesure_pl <- dbSendQuery(con, query)
mesure_pl <- fetch(mesure_pl, -1)
query <- paste("SELECT DISTINCT
public.placette22.id_placette||'_'||public.ss_placette22.lib_ss_placette as id_unite,
public.mesure22.no_mesure,
public.mesure22.an_vegetation,
public.mesure22.type_suivi_id
FROM
public.placette22
INNER JOIN public.ss_placette22 on (public.ss_placette22.placette_id = public.placette22.id_placette)
INNER JOIN public.mesure22 ON (public.placette22.id_placette = public.mesure22.placette_id)
INNER JOIN public.dispositif22 ON (public.placette22.dispositif_id = public.dispositif22.id_dispositif)
WHERE
type_suivi_id in (4, 5, 6, 7) AND dispositif22.lib_disp in (",disp,")", sep="")
mesure_sp <- dbSendQuery(con, query)
mesure_sp <- fetch(mesure_sp, -1)
mesure <- rbind.fill(mesure_pl, mesure_sp)
mesure <- merge(mesure, unite[,c("id_unite", "an_naissance")])
mesure$age <- mesure$an_vegetation - mesure$an_naissance
mesure <- mesure[, -which(names(mesure) == "an_naissance")]
######## dataframe arbre
query <- paste("SELECT DISTINCT
public.placette22.id_placette as id_unite,
public.mesure22.no_mesure,
public.arbre22.no_arb_pl as no_arbre,
public.arbre22.essence_id,
public.mesure_echantillon22.co_ech,
public.mesure_echantillon22.etat_san_id,
public.mesure_echantillon22.statut_av_id,
public.mesure_echantillon22.diam_130,
public.mesure_echantillon22.circonference130,
public.mesure_echantillon22.eclairci_realise_id
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.arbre22 ON (public.placette22.id_placette = public.arbre22.placette_id)
INNER JOIN public.mesure_echantillon22 ON (public.arbre22.id_arbre = public.mesure_echantillon22.arbre_id)
INNER JOIN public.mesure22 ON (public.mesure_echantillon22.mesure_id = public.mesure22.id_mesure) AND (public.placette22.id_placette = public.mesure22.placette_id)
WHERE
dispositif22.lib_disp in (",disp,")", sep="")
arbre_pl <- dbSendQuery(con, query)
arbre_pl <- fetch(arbre_pl, -1)
query <- paste("SELECT DISTINCT
public.placette22.id_placette||'_'||public.ss_placette22.lib_ss_placette as id_unite,
public.mesure22.no_mesure,
public.arbre22.no_arb_sp as no_arbre,
public.arbre22.essence_id,
public.mesure_echantillon_sp22.co_ech,
public.mesure_echantillon_sp22.etat_san_id,
public.mesure_echantillon_sp22.statut_av_id,
public.mesure_echantillon_sp22.diam_130,
public.mesure_echantillon_sp22.circonference130,
public.mesure_echantillon_sp22.eclairci_realise_id
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.ss_placette22 on (public.ss_placette22.placette_id = public.placette22.id_placette)
INNER JOIN public.arbre22 ON (public.placette22.id_placette = public.arbre22.placette_id)
INNER JOIN public.mesure_echantillon_sp22 ON (public.arbre22.id_arbre = public.mesure_echantillon_sp22.arbre_id)
INNER JOIN public.mesure22 ON (public.mesure_echantillon_sp22.mesure_id = public.mesure22.id_mesure) AND (public.placette22.id_placette = public.mesure22.placette_id)
WHERE
dispositif22.lib_disp in (",disp,")", sep="")
arbre_sp <- dbSendQuery(con, query)
arbre_sp <- fetch(arbre_sp, -1)
arbre <- rbind.fill(arbre_pl, arbre_sp)
arbre <- subset(arbre, ! co_ech %in% c(4, 9) & ! etat_san_id %in% c(-3, 3, 4, 5, 9) & statut_av_id != 4)
arbre$c130 <- with(arbre, ifelse(is.na(circonference130), diam_130 * pi, circonference130))
arbre <- subset(arbre, select=-c(diam_130, circonference130)) ## comment supprimer la colonne row.names ???
######## dataframe arbre_echantillon
query <- paste("SELECT DISTINCT
public.placette22.id_placette as id_unite,
public.mesure22.no_mesure,
public.arbre22.no_arb_pl as no_arbre,
public.arbre22.essence_id,
public.mesure_echantillon22.co_ech,
public.mesure_echantillon22.etat_san_id,
public.mesure_echantillon22.statut_av_id,
public.mesure_echantillon22.statut_ap_id,
public.mesure_echantillon22.diam_130,
public.mesure_echantillon22.circonference130,
public.mesure_echantillon22.hauteur_ech,
public.mesure_echantillon22.ht_pb_s,
public.mesure_echantillon22.ht_pb_g,
public.mesure_echantillon22.ht_pb_i,
public.mesure_echantillon22.ht_pb_v
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.arbre22 ON (public.placette22.id_placette = public.arbre22.placette_id)
INNER JOIN public.mesure_echantillon22 ON (public.arbre22.id_arbre = public.mesure_echantillon22.arbre_id)
INNER JOIN public.mesure22 ON (public.mesure_echantillon22.mesure_id = public.mesure22.id_mesure) AND (public.placette22.id_placette = public.mesure22.placette_id)
WHERE
mesure_echantillon22.co_ech='1' AND dispositif22.lib_disp in(",disp,")
UNION
SELECT DISTINCT
public.placette22.id_placette as id_unite,
public.mesure22.no_mesure,
public.arbre22.no_arb_pl as no_arbre,
public.arbre22.essence_id,
public.mesure_echantillon22.co_ech,
public.mesure_echantillon22.etat_san_id,
public.mesure_echantillon22.statut_av_id,
public.mesure_echantillon22.statut_ap_id,
public.mesure_echantillon22.diam_130,
public.mesure_echantillon22.circonference130,
public.mesure_echantillon22.hauteur_ech,
public.mesure_echantillon22.ht_pb_s,
public.mesure_echantillon22.ht_pb_g,
public.mesure_echantillon22.ht_pb_i,
public.mesure_echantillon22.ht_pb_v
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.arbre22 ON (public.placette22.id_placette = public.arbre22.placette_id)
INNER JOIN public.mesure_echantillon22 ON (public.arbre22.id_arbre = public.mesure_echantillon22.arbre_id)
INNER JOIN public.mesure22 ON (public.mesure_echantillon22.mesure_id = public.mesure22.id_mesure) AND (public.placette22.id_placette = public.mesure22.placette_id)
WHERE
mesure_echantillon22.co_ech='2' AND dispositif22.lib_disp in (",disp,")", sep="")
ech_pl <- dbSendQuery(con, query)
ech_pl <- fetch(ech_pl, -1)
query <- paste("SELECT DISTINCT
public.placette22.id_placette||'_'||public.ss_placette22.lib_ss_placette as id_unite,
public.mesure22.no_mesure,
public.arbre22.no_arb_sp as no_arbre,
public.arbre22.essence_id,
public.mesure_echantillon_sp22.co_ech,
public.mesure_echantillon_sp22.etat_san_id,
public.mesure_echantillon_sp22.statut_av_id,
public.mesure_echantillon_sp22.statut_ap_id,
public.mesure_echantillon_sp22.diam_130,
public.mesure_echantillon_sp22.circonference130,
public.mesure_echantillon_sp22.hauteur_ech,
public.mesure_echantillon_sp22.ht_pb_s,
public.mesure_echantillon_sp22.ht_pb_g,
public.mesure_echantillon_sp22.ht_pb_i,
public.mesure_echantillon_sp22.ht_pb_v
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.ss_placette22 on (public.ss_placette22.placette_id = public.placette22.id_placette)
INNER JOIN public.arbre22 ON (public.placette22.id_placette = public.arbre22.placette_id)
INNER JOIN public.mesure_echantillon_sp22 ON (public.arbre22.id_arbre = public.mesure_echantillon_sp22.arbre_id)
INNER JOIN public.mesure22 ON (public.mesure_echantillon_sp22.mesure_id = public.mesure22.id_mesure) AND (public.placette22.id_placette = public.mesure22.placette_id)
WHERE
mesure_echantillon_sp22.co_ech = '1' AND dispositif22.lib_disp in (",disp,")
UNION
SELECT DISTINCT
public.placette22.id_placette||'_'||public.ss_placette22.lib_ss_placette as id_unite,
public.mesure22.no_mesure,
public.arbre22.no_arb_sp as no_arbre,
public.arbre22.essence_id,
public.mesure_echantillon_sp22.co_ech,
public.mesure_echantillon_sp22.etat_san_id,
public.mesure_echantillon_sp22.statut_av_id,
public.mesure_echantillon_sp22.statut_ap_id,
public.mesure_echantillon_sp22.diam_130,
public.mesure_echantillon_sp22.circonference130,
public.mesure_echantillon_sp22.hauteur_ech,
public.mesure_echantillon_sp22.ht_pb_s,
public.mesure_echantillon_sp22.ht_pb_g,
public.mesure_echantillon_sp22.ht_pb_i,
public.mesure_echantillon_sp22.ht_pb_v
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.arbre22 ON (public.placette22.id_placette = public.arbre22.placette_id)
INNER JOIN public.ss_placette22 on (public.ss_placette22.placette_id = public.placette22.id_placette)
INNER JOIN public.mesure_echantillon_sp22 ON (public.arbre22.id_arbre = public.mesure_echantillon_sp22.arbre_id)
INNER JOIN public.mesure22 ON (public.mesure_echantillon_sp22.mesure_id = public.mesure22.id_mesure) AND (public.placette22.id_placette = public.mesure22.placette_id)
WHERE
mesure_echantillon_sp22.co_ech='2' AND dispositif22.lib_disp in (",disp,")", sep="")
ech_sp <- dbSendQuery(con, query)
ech_sp <- fetch(ech_sp, -1)
query <- paste("SELECT DISTINCT
public.placette22.id_placette as id_unite,
public.mesure22.no_mesure,
public.arbre22.no_arb_bd as no_arbre,
public.arbre22.essence_id,
public.mesure_echantillon_bd22.co_ech,
public.mesure_echantillon_bd22.etat_san_id,
public.mesure_echantillon_bd22.statut_av_id,
public.mesure_echantillon_bd22.statut_ap_id,
public.mesure_echantillon_bd22.diam_130,
public.mesure_echantillon_bd22.circonference130,
public.mesure_echantillon_bd22.hauteur_ech,
public.mesure_echantillon_bd22.ht_pb_s,
public.mesure_echantillon_bd22.ht_pb_g,
public.mesure_echantillon_bd22.ht_pb_i,
public.mesure_echantillon_bd22.ht_pb_v,
public.mesure22.type_suivi_id
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.arbre22 ON (public.placette22.id_placette = public.arbre22.placette_id)
INNER JOIN public.mesure_echantillon_bd22 ON (public.arbre22.id_arbre = public.mesure_echantillon_bd22.arbre_id)
INNER JOIN public.mesure22 ON (public.mesure_echantillon_bd22.mesure_id = public.mesure22.id_mesure) AND (public.placette22.id_placette = public.mesure22.placette_id)
WHERE
dispositif22.lib_disp in (",disp,")", sep="")
ech_bd <- dbSendQuery(con, query)
ech_bd <- fetch(ech_bd, -1)
ech_bd <- subset(ech_bd, select = -c(type_suivi_id), (co_ech=='3' & type_suivi_id%in%c(3,7)) | co_ech%in%c('1','2'))
arbre_echantillon <- rbind.fill(ech_pl, ech_sp, ech_bd)
arbre_echantillon$c130 <- with(arbre_echantillon, ifelse(is.na(circonference130), diam_130 * pi, circonference130))
arbre_echantillon <- subset(arbre_echantillon, select=-c(diam_130, circonference130))
######## dataframe inventaire_liste et inventaire_somme
query <- paste("SELECT DISTINCT
public.placette22.id_placette as id_unite,
public.mesure22.no_mesure,
public.bandelette_surface22.av_ap_id,
public.bandelette_surface22.no_inventaire,
public.mesure_inventaire22.circ_diam_id,
public.mesure_inventaire22.essence_id,
public.mesure_inventaire22.borne_inf,
public.mesure_inventaire22.borne_sup,
public.mesure_inventaire22.effectif
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.bandelette22 ON (public.placette22.id_placette = public.bandelette22.placette_id)
INNER JOIN public.bandelette_surface22 ON (public.bandelette22.id_bandelette = public.bandelette_surface22.bandelette_id)
INNER JOIN public.mesure22 ON (public.bandelette_surface22.mesure_id = public.mesure22.id_mesure)
AND (public.placette22.id_placette = public.mesure22.placette_id)
INNER JOIN public.mesure_inventaire22 ON (public.bandelette_surface22.id_bandelette_surface = public.mesure_inventaire22.bandelette_surface_id)
WHERE
dispositif22.lib_disp in (",disp,")", sep="",
"ORDER BY id_unite, no_mesure, av_ap_id, no_inventaire, essence_id, borne_inf")
inventaire_liste <- dbSendQuery(con, query)
inventaire_liste <- fetch(inventaire_liste, -1)
inventaire_somme <- summaryBy(effectif~id_unite+no_mesure+av_ap_id+no_inventaire+circ_diam_id+essence_id+borne_inf+borne_sup, FUN= function(x) c(sum=sum(x, na.rm=TRUE)), data=inventaire_liste, keep.names=TRUE)
inventaire_somme$c130 <- with(inventaire_somme, (borne_inf + borne_sup)/2 * ifelse(circ_diam_id == 1, pi, 1))
inventaire_somme <- subset(inventaire_somme, select=-c(circ_diam_id, borne_inf, borne_sup))
######## dataframe surface_somme
query <- paste("SELECT DISTINCT
public.placette22.id_placette as id_unite,
public.mesure22.no_mesure,
public.bandelette_surface22.av_ap_id,
public.bandelette_surface22.no_inventaire,
public.bandelette_surface22.surface
FROM
public.placette22
INNER JOIN public.bandelette22 on (public.bandelette22.placette_id = public.placette22.id_placette)
INNER JOIN public.mesure22 ON (public.placette22.id_placette = public.mesure22.placette_id)
INNER JOIN public.bandelette_surface22 ON (public.bandelette22.id_bandelette = public.bandelette_surface22.bandelette_id) AND (public.mesure22.id_mesure = public.bandelette_surface22.mesure_id)
INNER JOIN public.dispositif22 ON (public.placette22.dispositif_id = public.dispositif22.id_dispositif)
WHERE
dispositif22.lib_disp in (",disp,")", sep="",
"ORDER BY id_unite, no_mesure, av_ap_id, no_inventaire")
ss_unite_surface_bd <- dbSendQuery(con, query)
ss_unite_surface_bd <- fetch(ss_unite_surface_bd, -1)
surface_somme <- summaryBy(surface~id_unite+no_mesure+av_ap_id+no_inventaire, FUN= function(x) c(sum=sum(x, na.rm=TRUE)), data=ss_unite_surface_bd, keep.names=TRUE)
names(surface_somme)[match("surface",names(surface_somme))] <- "surf_inv"
######## dataframe mesure2
# Pour le suivi par bandelette
query <- paste("SELECT DISTINCT
public.placette22.id_placette as id_unite,
public.mesure22.no_mesure,
public.mesure22.an_vegetation,
public.bandelette_surface22.av_ap_id,
public.bandelette_surface22.no_inventaire,
public.mesure22.type_suivi_id,
'classe' as suivi
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.bandelette22 ON (public.placette22.id_placette = public.bandelette22.placette_id)
INNER JOIN public.bandelette_surface22 ON (public.bandelette22.id_bandelette = public.bandelette_surface22.bandelette_id)
INNER JOIN public.mesure22 ON (public.bandelette_surface22.mesure_id = public.mesure22.id_mesure)
AND (public.placette22.id_placette = public.mesure22.placette_id)
INNER JOIN public.mesure_inventaire22 ON (public.bandelette_surface22.id_bandelette_surface = public.mesure_inventaire22.bandelette_surface_id)
WHERE
dispositif22.lib_disp in (",disp,")", sep="",
"ORDER BY id_unite, no_mesure, av_ap_id, no_inventaire")
m2_bd <- dbSendQuery(con, query)
m2_bd <- fetch(m2_bd, -1)
m2_bd$suivi <- "classe"
m2_bd <- merge(m2_bd, surface_somme[, c("id_unite", "no_mesure", "av_ap_id", "no_inventaire", "surf_inv")], all.x=T, all.y=F)
inventaire <- summaryBy(no_inventaire~id_unite+no_mesure+av_ap_id, FUN= function(x) c(max=max(x, na.rm=TRUE)), data = subset(m2_bd, select=c("id_unite", "no_mesure", "av_ap_id", "no_inventaire")), keep.names=TRUE)
# Pour le suivi par placette
query <- paste("SELECT DISTINCT
public.placette22.id_placette as id_unite,
public.mesure22.no_mesure,
public.mesure22.an_vegetation,
public.mesure22.type_suivi_id,
sum(public.mesure_echantillon22.eclairci_realise_id) as eclairci
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.arbre22 ON (public.placette22.id_placette = public.arbre22.placette_id)
INNER JOIN public.mesure_echantillon22 ON (public.arbre22.id_arbre = public.mesure_echantillon22.arbre_id)
INNER JOIN public.mesure22 ON (public.mesure_echantillon22.mesure_id = public.mesure22.id_mesure) AND (public.placette22.id_placette = public.mesure22.placette_id)
WHERE
dispositif22.lib_disp in (",disp,")", sep="",
"GROUP BY id_unite,no_mesure,an_vegetation,type_suivi_id")
m2_pl <- dbSendQuery(con, query)
m2_pl <- fetch(m2_pl, -1)
m2_pl$suivi <- 'liste'
m2_pl_ecl <- m2_pl[m2_pl$eclairci > 0 & ! m2_pl$type_suivi_id %in% c(3,7),]
m2_pl_ecl_av <- m2_pl_ecl
m2_pl_ecl_av$av_ap_id <- 1
m2_pl_ecl_av$no_inventaire <- 1
m2_pl_ecl_ap <- m2_pl_ecl
m2_pl_ecl_ap$av_ap_id <- 2
m2_pl_ecl_ap$no_inventaire <- 1
m2_pl_0ecl <- m2_pl[m2_pl$eclairci==0 & ! m2_pl$type_suivi_id %in% c(3,7), ]
m2_pl_0ecl$av_ap_id <- 0
m2_pl_0ecl$no_inventaire <- 1
#cas des tansitions bandelettes --> placette
m2_bd_pl <- m2_pl[m2_pl$type_suivi_id%in%c(3,7),]
m2_bd_pl <- merge(m2_bd_pl, inventaire, all.x=T, all.y=F)
m2_bd_pl$no_inventaire <- ifelse(m2_bd_pl$av_ap_id %in% c(0,2), m2_bd_pl$no_inventaire + 1, 1)
m2_bd_pl$av_ap_id <- ifelse(m2_bd_pl$av_ap_id == 0, 0, 2)
# Pour le suivi par sous-placette
query <- paste("SELECT DISTINCT
public.placette22.id_placette||'_'||public.ss_placette22.lib_ss_placette as id_unite,
public.mesure22.no_mesure,
public.mesure22.an_vegetation,
public.mesure22.type_suivi_id,
sum(public.mesure_echantillon_sp22.eclairci_realise_id) as eclairci
FROM
public.dispositif22
INNER JOIN public.placette22 ON (public.dispositif22.id_dispositif = public.placette22.dispositif_id)
INNER JOIN public.ss_placette22 on (public.ss_placette22.placette_id = public.placette22.id_placette)
INNER JOIN public.arbre22 ON (public.placette22.id_placette = public.arbre22.placette_id)
INNER JOIN public.mesure_echantillon_sp22 ON (public.arbre22.id_arbre = public.mesure_echantillon_sp22.arbre_id)
INNER JOIN public.mesure22 ON (public.mesure_echantillon_sp22.mesure_id = public.mesure22.id_mesure) AND (public.placette22.id_placette = public.mesure22.placette_id)
WHERE
dispositif22.lib_disp in (",disp,")", sep="",
"GROUP BY id_unite,no_mesure,an_vegetation,type_suivi_id")
m2_sp <- dbSendQuery(con, query)
m2_sp <- fetch(m2_sp, -1)
m2_sp$suivi <- 'liste'
m2_sp$no_inventaire <- 1
m2_sp_ecl <- m2_sp[m2_sp$eclairci > 0 & ! m2_sp$type_suivi_id %in% c(3,7),]
m2_sp_ecl_av <- m2_sp_ecl
if(nrow(m2_sp_ecl) > 0){
m2_sp_ecl_av$av_ap_id <- 1
m2_sp_ecl_av$no_inventaire <- 1
m2_sp_ecl_ap <- m2_sp_ecl
m2_sp_ecl_ap$av_ap_id <- 2
m2_sp_ecl_ap$no_inventaire <- 1
} else {
m2_sp_ecl_av <- data.frame(id_unite=character(),
no_mesure = integer(),
an_vegetation = integer(),
type_suivi_id = integer(),
eclairci=numeric(),
suivi =character(),
no_inventaire=numeric() )
m2_sp_ecl_ap <- data.frame(id_unite=character(),
no_mesure = integer(),
an_vegetation = integer(),
type_suivi_id = integer(),
eclairci=numeric(),
suivi =character(),
no_inventaire=numeric() )
}
m2_sp_0ecl <- m2_sp[m2_sp$eclairci==0 & ! m2_sp$type_suivi_id%in%c(3,7),]
m2_sp_0ecl$av_ap_id <- 0
mesure2 <- rbind.fill(m2_bd, m2_pl_ecl_av, m2_pl_ecl_ap, m2_pl_0ecl, m2_bd_pl, m2_sp_ecl_av, m2_sp_ecl_ap, m2_sp_0ecl)
mesure2 <- mesure2[with(mesure2, order(id_unite, no_mesure, av_ap_id, no_inventaire)),]
mesure2[1, "ordre_inv"] <- 1
for (val in 2:nrow(mesure2)) {
mesure2[val, "ordre_inv"] <- ifelse(mesure2[val, "id_unite"] == mesure2[val - 1, "id_unite"], mesure2[val - 1, "ordre_inv"] + 1, 1)
}
mesure2 <- merge(mesure2, unite[, c("id_unite", "surface")])
mesure2$surf_inv[is.na(mesure2$surf_inv)] <- mesure2$surface[is.na(mesure2$surf_inv)]
mesure2 <- merge(mesure2, mesure[, c("id_unite", "no_mesure", "age")])
mesure2 <- subset(mesure2, select = -c(type_suivi_id, eclairci, surface))
############# sortie
return(list("unite" = unite, "mesure" = mesure, "arbre" = arbre, "arbre_echantillon" = arbre_echantillon, "surface_somme" = surface_somme,
"inventaire_somme" = inventaire_somme, "mesure2" = mesure2))
}
# peut-on avoir le cas ou il y a suivi en classse avec no_inventaire=2 puis suivi en liste ???
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.