Migration de la bdd SICEN vers le nouveau serveur et postgis 1.5

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.

  • Contexte ancien serveur
    • logiciel : windows XP pro ancien serveur PostgreSQL 8.3 / PostGIS 1.4 (données en lambert 2 étendu)
    • matériel :
  • Contexte nouveau serveur
    • logiciel : RHEL 5.4 virtualisé + PostgreSQL 8.4 / PostGIS 1.5 (données en lambert 93)
    • matériel : IBM…

Étapes

  • dump & restore de la bdd selon la méthode présentée ici
  • pour toutes les tables contenant une géométrie1)
    • créer une colonne geom_l2c
    • mettre à jour cette colonne avec la valeur de la colonne géométrie
    • changer le SRID de la colonne géométrie en Lambert 93 (code EPSG/IGNF2) : 310024140)
    • mettre la à jour la colonne “geometrie” avec la reprojection de la valeur de geom_l2c (st_transform(geom_l2c,310024140)

Première réalisation avec ce serveur

Création de tables de consultation des données en remplacement des vues

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.

  1. Création des vues de mise en forme des données
    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);
     
  2. Création de la table
    CREATE TABLE tous_point_flore_selon_format_esri AS SELECT * FROM visu_tous_point_flore_format_esri;
  3. Création des contraintes
    ALTER TABLE tous_point_flore_selon_format_esri ADD PRIMARY KEY (id_entite);
  4. Création des index
    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);
  5. Ajout des contraintes de géométrie
    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);
  6. Référencement de la table dans la table geomtry_columns
1) le code sql nécessaire à tout cela est généré par interrogation de la table geometry_colmuns
creation_bdd/evolution.txt · Dernière modification: 2010/05/12 09:54 par admin_wiki_sicen
www.chimeric.de Creative Commons License Valid CSS Propulsé par DokuWiki Get firefox!! Changements récents - flux RSS Valid XHTML 1.0 Hébergé par Alwaysdata