Skip to content

Commit

Permalink
Suppression de l'installation sans taxhub + simplification installati…
Browse files Browse the repository at this point in the history
…on sans ref_geo
  • Loading branch information
amandine-sahl committed Oct 17, 2024
1 parent 8c89df0 commit a7c2146
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 148 deletions.
13 changes: 8 additions & 5 deletions atlas/configuration/settings.ini.sample
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,15 @@ use_ref_geo_gn2=true
# Souhaitez-vous installer le schéma taxonomie de TaxHub dans la BDD de GeoNature-atlas ?
# false si vous souhaitez utiliser celui de GeoNature en FDW
# ATTENTION : Doit être true si geonature_source=false
install_taxonomie=false
# OBSOLETE
# install_taxonomie=false

################################################
##### CONNEXION A LA BDD GEONATURE SOURCE ######
################################################

# Necessaire uniquement si on veut se connecter à la BDD source GeoNature en foreign data wrapper
# Si vous n'utilisez pas GeoNature, vous pouvez vous inspirer du fichier data/atlas_geonature.sql
# Paramètres de connexion à la BDD source GeoNature et/ou Taxhub en foreign data wrapper
# Si vous n'utilisez pas GeoNature, pour les données d'observation, vous pouvez vous inspirer du fichier data/atlas_geonature.sql
# pour vous connecter à une autre BDD mère

# Host de la BDD GeoNature source
Expand Down Expand Up @@ -85,7 +86,8 @@ type_territoire="'PEC'"

# Creer la table des communes à partir d'un shapefile ?
# Si false, modifiez la creation de 'atlas.vm_communes' dans data/atlas/atlas.vm_communes.sql
import_commune_shp=true
# PARAMETRE OBSOLETE OBLIGATOIRE SI PAS DE REF_GEO
# import_commune_shp=true

# Chemin et nom des colonnes du SHP des communes du territoire. Laisser tel quel (en modifiant uniquement MYUSERLINUX)
# pour utiliser les communes du PnEcrins par défaut
Expand Down Expand Up @@ -120,7 +122,8 @@ altitudes=(0 500 1000 1500 2000 2500 3000 3500 4000)

# Version de TaxHub à utiliser pour installer le schéma taxonomie si install_taxonomie=true
# Numéro de version conseillée et testée : 1.8.1
taxhub_release=1.8.1
# PARAMETRE OBSOLETE Taxhub est OBLIGATOIRE
# taxhub_release=1.8.1

#### ID DES TYPES DES ATTRIBUTS DECRIVANT LES TAXONS DANS atlas.vm_cor_taxon_attribut --
## !! si changement: modifier également dans main/configuration/config.py
Expand Down
11 changes: 11 additions & 0 deletions data/atlas/without_ref_geo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
CREATE INDEX index_gist_t_layer_territoire ON atlas.t_layer_territoire USING gist(the_geom);
CREATE INDEX index_gist_t_layers_communes ON atlas.l_communes USING gist (the_geom);

CREATE TABLE atlas.t_mailles_territoire as
SELECT m.geom AS the_geom, ST_AsGeoJSON(st_transform(m.geom, 4326)) as geojson_maille
FROM atlas.t_mailles_t_mailles_source m, atlas.t_layer_territoire t
WHERE ST_Intersects(m.geom, t.the_geom);

CREATE INDEX index_gist_t_mailles_territoire ON atlas.t_mailles_territoire USING gist (the_geom);
ALTER TABLE atlas.t_mailles_territoire ADD COLUMN id_maille serial;
ALTER TABLE atlas.t_mailles_territoire ADD PRIMARY KEY (id_maille);
9 changes: 0 additions & 9 deletions data/gn2/atlas_ref_taxonomie.sql
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,3 @@ CREATE SCHEMA IF NOT EXISTS taxonomie;
IMPORT FOREIGN SCHEMA taxonomie
LIMIT TO (taxonomie.taxref, taxonomie.cor_taxon_attribut, taxonomie.t_medias)
FROM SERVER geonaturedbserver INTO taxonomie ;

ALTER TABLE taxonomie.taxref OWNER TO myuser;
GRANT ALL ON TABLE taxonomie.taxref TO myuser;

ALTER TABLE taxonomie.cor_taxon_attribut OWNER TO myuser;
GRANT ALL ON TABLE taxonomie.cor_taxon_attribut TO myuser;

ALTER TABLE taxonomie.t_medias OWNER TO myuser;
GRANT ALL ON TABLE taxonomie.t_medias TO myuser;
1 change: 1 addition & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ CHANGELOG
🚀 **Nouveautés**

- Ajout du lien "Données personelles" dans le pied de page (#527 @juggler31)
- Suppression du support des installations sans TaxHub

🐛 **Corrections**

Expand Down
4 changes: 1 addition & 3 deletions docs/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,7 @@ Plus de détails sur les différentes vues matérialisées dans le fichier `<vue
Vous y trouverez aussi un exemple d'adaptation de la vue ``atlas.vm_observations``, basé sur une BDD SICEN.

Par ailleurs, si vous n'utilisez pas GeoNature, il vous faut installer TaxHub (https://github.com/PnX-SI/TaxHub/) ou au moins sa BDD, pour gérer les attributs (description, commentaire, milieu et chorologie) ainsi que les médias rattachés à chaque espèce (photos, videos, audios et articles). TaxHub dispose aussi de scripts permettant d'importer les médias des espèces depuis les photos libres de l'INPN (https://github.com/PnX-SI/TaxHub/tree/master/data/scripts/import_inpn_media) ou de Wikimedia (https://github.com/PnX-SI/TaxHub/tree/master/data/scripts/import_wikimedia_commons).

L'installation du schéma ``taxonomie`` de TaxHub dans la BDD de l'atlas peut se faire automatiquement lors de l'installation de la BDD avec le paramètre ``install_taxonomie=true``.


A noter aussi que si vous ne connectez pas l'atlas à une BDD GeoNature (``geonature_source=false``), une table exemple ``synthese.syntheseff`` comprenant 2 observations est créée. A vous d'adapter les vues après l'installation pour les connecter à vos données sources.

Lancez le fichier fichier d'installation de la base de données :
Expand Down
166 changes: 35 additions & 131 deletions install_db.sh
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,9 @@ if ! database_exists $db_name
export PGPASSWORD=$owner_atlas_pass;psql -d $db_name -U $owner_atlas -h $db_host -p $db_port -f data/gn2/atlas_gn2.sql &>> log/install_db.log
fi

###########################
###### REF_GEO
###########################
if $use_ref_geo_gn2
then
echo "Creation of geographic tables from the ref_geo schema of the geonature database"
Expand All @@ -139,26 +142,16 @@ if ! database_exists $db_name
-lco GEOMETRY_NAME=the_geom \
PG:"host=$db_host port=$db_port dbname=$db_name user=$owner_atlas password=$owner_atlas_pass schemas=atlas" \
-nln t_layer_territoire $limit_shp

# FR: Creation de l'index GIST sur la couche territoire atlas.t_layer_territoire
# EN: Creation of the GIST index on the territory layer atlas.t_layer_territory
sudo -u postgres -s psql -d $db_name -c "CREATE INDEX index_gist_t_layer_territoire ON atlas.t_layer_territoire USING gist(the_geom); " &>> log/install_db.log


# FR: Import du shape des communes ($communes_shp) dans la BDD (si parametre import_commune_shp = TRUE) / atlas.l_communes
# EN: Import of the shape of the communes ($communes_shp) in the DB (if parameter import_commune_shp = TRUE) / atlas.l_communes
if $import_commune_shp
then
file_name=`echo $(basename $communes_shp) | cut -d "." -f1`
ogr2ogr -f "PostgreSQL" \
-t_srs EPSG:4326 \
-lco GEOMETRY_NAME=the_geom \
-sql "SELECT $colonne_nom_commune AS commune_maj, $colonne_insee AS insee FROM $file_name" \
PG:"host=$db_host port=$db_port dbname=$db_name user=$owner_atlas password=$owner_atlas_pass schemas=atlas" \
-nln l_communes $communes_shp

sudo -u postgres -s psql -d $db_name -c "CREATE INDEX index_gist_t_layers_communes ON atlas.l_communes USING gist (the_geom);" &>> log/install_db.log

fi
file_name=`echo $(basename $communes_shp) | cut -d "." -f1`
ogr2ogr -f "PostgreSQL" \
-t_srs EPSG:4326 \
-lco GEOMETRY_NAME=the_geom \
-sql "SELECT $colonne_nom_commune AS commune_maj, $colonne_insee AS insee FROM $file_name" \
PG:"host=$db_host port=$db_port dbname=$db_name user=$owner_atlas password=$owner_atlas_pass schemas=atlas" \
-nln l_communes $communes_shp

# FR: Mise en place des mailles
# EN: Setting up the meshes
Expand All @@ -169,10 +162,7 @@ if ! database_exists $db_name
if $metropole
then
# Je dézippe mailles fournies par l'INPN aux 3 échelles
cd data/ref
rm -f L93*.dbf L93*.prj L93*.sbn L93*.sbx L93*.shp L93*.shx
unzip L93_${taillemaille}K.zip
cd ../../
unzip data/ref/L93_${taillemaille}K.zip

if [ $taillemaille = 1 ]
then
Expand All @@ -189,22 +179,11 @@ if ! database_exists $db_name
-t_srs EPSG:4326 \
-lco GEOMETRY_NAME=geom \
PG:"host=$db_host port=$db_port dbname=$db_name user=$owner_atlas password=$owner_atlas_pass schemas=atlas" \
-nln t_mailles_$taillemaille $file_name

# Creation de la table atlas.t_mailles_territoire avec la taille de maille passée en parametre ($taillemaille). Pour cela j'intersecte toutes les mailles avec mon territoire
# TODO : rajouter la colonne id_maille
sudo -u postgres -s psql -d $db_name -c "CREATE TABLE atlas.t_mailles_territoire as
SELECT m.geom AS the_geom, ST_AsGeoJSON(st_transform(m.geom, 4326)) as geojson_maille
FROM atlas.t_mailles_"$taillemaille" m, atlas.t_layer_territoire t
WHERE ST_Intersects(m.geom, t.the_geom);
CREATE INDEX index_gist_t_mailles_territoire
ON atlas.t_mailles_territoire
USING gist (the_geom);
ALTER TABLE atlas.t_mailles_territoire
ADD COLUMN id_maille serial;
ALTER TABLE atlas.t_mailles_territoire
ADD PRIMARY KEY (id_maille);" &>> log/install_db.log
-nln t_mailles_source $file_name

# Run sql files
export PGPASSWORD=$owner_atlas_pass;psql -d $db_name -U $owner_atlas -h $db_host -p $db_port -f /tmp/atlas/without_ref_geo.sql &>> log/install_db.log

fi

# FR: Conversion des limites du territoire en json
Expand All @@ -213,94 +192,18 @@ if ! database_exists $db_name
ogr2ogr -f "GeoJSON" -t_srs "EPSG:4326" -s_srs "EPSG:4326" ./atlas/static/custom/territoire.json \
PG:"host=$db_host user=$owner_atlas dbname=$db_name port=$db_port password=$owner_atlas_pass" "atlas.t_layer_territoire"


# FR: Si j'installe le schéma taxonomie de TaxHub dans la BDD de GeoNature-atlas ($install_taxonomie = True),
# alors je récupère les fichiers dans le dépôt de TaxHub et les éxécute
# EN: If I install the TaxHub taxonomy schema in the GeoNature-atlas DB ($install_taxonomy = True),
# then I get the files from the TaxHub repository and run them
if $install_taxonomie
then
wget https://raw.githubusercontent.com/PnX-SI/TaxHub/$taxhub_release/data/inpn/data_inpn_taxhub.sql -P /tmp/taxhub

array=( TAXREF_INPN_v11.zip ESPECES_REGLEMENTEES_v11.zip LR_FRANCE_20160000.zip )
for i in "${array[@]}"
do
if [ ! -f '/tmp/taxhub/'$i ]
then
wget http://geonature.fr/data/inpn/taxonomie/$i -P /tmp/taxhub
else
echo $i exists
fi
unzip /tmp/taxhub/$i -d /tmp/taxhub
done

echo "Getting 'taxonomie' schema creation scripts..."
wget https://raw.githubusercontent.com/PnX-SI/TaxHub/$taxhub_release/data/taxhubdb.sql -P /tmp/taxhub
wget https://raw.githubusercontent.com/PnX-SI/TaxHub/$taxhub_release/data/taxhubdata.sql -P /tmp/taxhub
wget https://raw.githubusercontent.com/PnX-SI/TaxHub/$taxhub_release/data/taxhubdata_taxons_example.sql -P /tmp/taxhub
wget https://raw.githubusercontent.com/PnX-SI/TaxHub/$taxhub_release/data/taxhubdata_atlas.sql -P /tmp/taxhub
wget https://raw.githubusercontent.com/PnX-SI/TaxHub/$taxhub_release/data/materialized_views.sql -P /tmp/taxhub

echo "Creating 'taxonomie' schema..."
echo "" &>> log/install_db.log
echo "" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "Creating 'taxonomie' schema" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "" &>> log/install_db.log
export PGPASSWORD=$owner_atlas_pass;psql -d $db_name -U $owner_atlas -h $db_host -p $db_port -f /tmp/taxhub/taxhubdb.sql &>> log/install_db.log

echo "Inserting INPN taxonomic data... (This may take a few minutes)"
echo "" &>> log/install_db.log
echo "" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "Inserting INPN taxonomic data" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "" &>> log/install_db.log
sudo -n -u postgres -s psql -d $db_name -f /tmp/taxhub/data_inpn_taxhub.sql &>> log/install_db.log

echo "Creating dictionaries data for taxonomic schema..."
echo "" &>> log/install_db.log
echo "" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "Creating dictionaries data for taxonomic schema" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "" &>> log/install_db.log
export PGPASSWORD=$owner_atlas_pass;psql -d $db_name -U $owner_atlas -h $db_host -p $db_port -f /tmp/taxhub/taxhubdata.sql &>> log/install_db.log

echo "Inserting sample dataset of taxons for taxonomic schema..."
echo "" &>> log/install_db.log
echo "" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "Inserting sample dataset of taxons for taxonomic schema" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "" &>> log/install_db.log
export PGPASSWORD=$owner_atlas_pass;psql -d $db_name -U $owner_atlas -h $db_host -p $db_port -f /tmp/taxhub/taxhubdata_taxons_example.sql &>> log/install_db.log

echo "--------------------" &>> log/install_db.log
echo "Inserting sample dataset - atlas attributes" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "" &>> log/install_db.log
export PGPASSWORD=$owner_atlas_pass;psql -d $db_name -U $owner_atlas -h $db_host -p $db_port -f /tmp/taxhub/taxhubdata_atlas.sql &>> log/install_db.log

echo "Creating a view that represent the taxonomic hierarchy..."
echo "" &>> log/install_db.log
echo "" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "Creating a view that represent the taxonomic hierarchy" &>> log/install_db.log
echo "--------------------" &>> log/install_db.log
echo "" &>> log/install_db.log
export PGPASSWORD=$owner_atlas_pass;psql -d $db_name -U $owner_atlas -h $db_host -p $db_port -f /tmp/taxhub/materialized_views.sql &>> log/install_db.log
elif $geonature_source
then
# FR: Creation des tables filles en FWD
# EN: Creation of daughter tables in FWD
echo "Creating the connection to GeoNature for the taxonomy"
sudo cp data/gn2/atlas_ref_taxonomie.sql /tmp/atlas/atlas_ref_taxonomie.sql &>> log/install_db.log
sudo sed -i "s/myuser;$/$owner_atlas;/" /tmp/atlas/atlas_ref_taxonomie.sql &>> log/install_db.log
export PGPASSWORD=$owner_atlas_pass;psql -d $db_name -U $owner_atlas -h $db_host -p $db_port -f /tmp/atlas/atlas_ref_taxonomie.sql &>> log/install_db.log
fi

###########################
###### TAXHUB
###########################
# FR: Creation des tables filles en FWD
# EN: Creation of daughter tables in FWD
echo "Creating the connection to GeoNature for the taxonomy"
export PGPASSWORD=$owner_atlas_pass;psql -d $db_name -U $owner_atlas -h $db_host -p $db_port -f data/gn2/atlas_ref_taxonomie.sql &>> log/install_db.log


###########################
###### Occurence data
###########################
echo "Creating DB structure"
# FR: Si j'utilise GeoNature ($geonature_source = True), alors je créé les tables filles en FDW connectées à la BDD de GeoNature
# EN: If I use GeoNature ($geonature_source = True), then I create the child tables in FDW connected to the GeoNature DB
Expand All @@ -316,6 +219,10 @@ if ! database_exists $db_name
export PGPASSWORD=$owner_atlas_pass;psql -d $db_name -U $owner_atlas -h $db_host -p $db_port -f /tmp/atlas/without_geonature.sql &>> log/install_db.log
fi


###########################
###### ATLAS
###########################
# FR: Creation des Vues Matérialisées (et remplacement éventuel des valeurs en dur par les paramètres)
# EN: Creation of Materialized Views (and possible replacement of hard values by parameters)
echo "----- Creating materialized views ------"
Expand Down Expand Up @@ -373,6 +280,7 @@ if ! database_exists $db_name
-v type_maille=$type_maille &>> log/install_db.log
echo "[$(date +'%H:%M:%S')] Passed - Duration : $((($SECONDS-$time_temp)/60))m$((($SECONDS-$time_temp)%60))s"
fi

# FR: Création de la vue matérialisée vm_mailles_observations (nombre d'observations par maille et par taxon)
# EN: Creation of the materialized view vm_meshes_observations (number of observations per mesh and per taxon)
echo "[$(date +'%H:%M:%S')] Creating atlas.vm_observations_mailles..."
Expand All @@ -391,11 +299,7 @@ if ! database_exists $db_name
cd data/ref
rm -f L*.shp L*.dbf L*.prj L*.sbn L*.sbx L*.shx output_clip.*
cd ../..
sudo -n rm -r /tmp/atlas
if [ -d '/tmp/taxhub' ]
then
rm -r /tmp/taxhub
fi
sudo -n rm -r /tmp/atlas

echo "Install finished - Duration :$(($SECONDS/60))m$(($SECONDS%60))s"
fi
Expand Down

0 comments on commit a7c2146

Please sign in to comment.