Cette migration est l'occasion de mener une réflexion sur la structuration et les évolutions à apporter à la structure de la base et d'opérer un nettoyage de printemps (tables temporaires et vues “de travail”)… Le travail mené sur la gestion de métadonnées et sur le parcours des données sera l'occasion d'y réfléchir vraiment.
Les vues “export_tous_*_*_selon_format_esri” sont gourmandes et ne sont pas compatible avec une visualisation en direct depuis GVSIG ou QGIS. Nous allons donc procéder à la création de tables destinées à recueillir le résultat de ces vues dés lors que de nouvelles données seront ventilées dans la base de données. Nous prendrons l'exemple de la table contenant l'ensemble des observations ponctuelles de flore.
CREATE OR REPLACE VIEW visu_tous_point_flore_format_esri AS SELECT entite_spatiale_ecologique.id_entite, NULL::text AS nom_vernac, referentiel_taxon_vegetal.nom_scientifique AS nom_latin, 'INPN'::text AS ref_tax, point_flore.date_obs, point_flore.date_debut_obs AS date_debut, point_flore.date_fin_obs AS date_fin, point_flore.date_textuelle AS date_text, point_flore.effectif, point_flore.effectif_min AS eff_min, point_flore.effectif_max AS eff_max, point_flore.type_effectif AS type_eff, point_flore.phenologie AS pheno, commune.toponyme AS commune, point_flore.coord_x, point_flore.coord_y, point_flore.coord_z, point_flore.systeme_coordonnees AS syst_coord, point_flore.unite, point_flore."precision", cen_liste_personne_auteur_ese(entite_spatiale_ecologique.id_entite) AS personnes, protocole.libelle AS protocole, structure.nom_structure AS structure, lot_donnee.libelle AS lot, point_flore.id_taxon AS cd_tax_ref, point_flore.remarque, point_flore.transmis_cbnmp AS trans_cbnmp, point_flore.taxon_mentionne AS mention, point_flore.date_ventilation AS ventil, referentiel_taxon_vegetal.id_taxon_ref, cen_liste_protection_taxon_vegetal(id_taxon_ref) AS statut, point_flore.geometrie FROM entite_spatiale_ecologique JOIN protocole ON entite_spatiale_ecologique.id_protocole = protocole.id_protocole JOIN lot_donnee ON entite_spatiale_ecologique.id_lot = lot_donnee.id_lot JOIN structure_est_auteur_donnee ON entite_spatiale_ecologique.id_entite = structure_est_auteur_donnee.id_entite JOIN structure ON structure_est_auteur_donnee.id_structure = structure.id_structure JOIN point_flore ON entite_spatiale_ecologique.id_entite = point_flore.id_entite JOIN referentiel_taxon_vegetal ON point_flore.id_taxon::text = referentiel_taxon_vegetal.id_taxon::text, commune WHERE st_intersects(point_flore.geometrie, commune.geometrie);
CREATE TABLE tous_point_flore_selon_format_esri AS SELECT * FROM visu_tous_point_flore_format_esri;
ALTER TABLE tous_point_flore_selon_format_esri ADD PRIMARY KEY (id_entite);
CREATE INDEX ind_pt_flore_nom_scientifique ON tous_point_flore_selon_format_esri USING btree (nom_latin ASC NULLS FIRST); CREATE INDEX ind_pt_flore_commune ON tous_point_flore_selon_format_esri USING btree (commune ASC NULLS FIRST);
ALTER TABLE tous_point_flore_selon_format_esri ADD CONSTRAINT enforce_dims_geometrie CHECK (ndims(geometrie) = 2); ALTER TABLE tous_point_flore_selon_format_esri ADD CONSTRAINT enforce_geotype_geometrie CHECK (geometrytype(geometrie) = 'MULTIPOINT'::text OR geometrie IS NULL); ALTER TABLE tous_point_flore_selon_format_esri ADD CONSTRAINT enforce_srid_geometrie CHECK (srid(geometrie) = 27582);