Skip to content

Commit

Permalink
Merge pull request #264 from PnX-SI/develop
Browse files Browse the repository at this point in the history
Develop > Master / Prepa 1.4.2
  • Loading branch information
camillemonchicourt committed Nov 25, 2020
2 parents e64348c + dc8e935 commit 7ff96e7
Show file tree
Hide file tree
Showing 13 changed files with 125 additions and 109 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.4.1
1.4.2
67 changes: 34 additions & 33 deletions atlas/atlasAPI.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,23 +33,23 @@ def searchCommuneAPI():
results = vmCommunesRepository.getCommunesSearch(session, search, limit)
return jsonify(results)


@api.route("/observationsMailleAndPoint/<int:cd_ref>", methods=["GET"])
def getObservationsMailleAndPointAPI(cd_ref):
"""
Retourne les observations d'un taxon en point et en maille
:returns: dict ({'point:<GeoJson>', 'maille': 'GeoJson})
"""
session = utils.loadSession()
observations = {
"point": vmObservationsRepository.searchObservationsChilds(session, cd_ref),
"maille": vmObservationsMaillesRepository.getObservationsMaillesChilds(
session, cd_ref
),
}
session.close()
return jsonify(observations)
if not current_app.config['AFFICHAGE_MAILLE']:
@api.route("/observationsMailleAndPoint/<int:cd_ref>", methods=["GET"])
def getObservationsMailleAndPointAPI(cd_ref):
"""
Retourne les observations d'un taxon en point et en maille
:returns: dict ({'point:<GeoJson>', 'maille': 'GeoJson})
"""
session = utils.loadSession()
observations = {
"point": vmObservationsRepository.searchObservationsChilds(session, cd_ref),
"maille": vmObservationsMaillesRepository.getObservationsMaillesChilds(
session, cd_ref
),
}
session.close()
return jsonify(observations)


@api.route("/observationsMaille/<int:cd_ref>", methods=["GET"])
Expand All @@ -70,22 +70,23 @@ def getObservationsMailleAPI(cd_ref, year_min=None, year_max=None):
return jsonify(observations)


@api.route("/observationsPoint/<int:cd_ref>", methods=["GET"])
def getObservationsPointAPI(cd_ref):
connection = utils.engine.connect()
observations = vmObservationsRepository.searchObservationsChilds(connection, cd_ref)
connection.close()
return jsonify(observations)


@api.route("/observations/<insee>/<int:cd_ref>", methods=["GET"])
def getObservationsCommuneTaxonAPI(insee, cd_ref):
connection = utils.engine.connect()
observations = vmObservationsRepository.getObservationTaxonCommune(
connection, insee, cd_ref
)
connection.close()
return jsonify(observations)
if not current_app.config['AFFICHAGE_MAILLE']:
@api.route("/observationsPoint/<int:cd_ref>", methods=["GET"])
def getObservationsPointAPI(cd_ref):
session = utils.loadSession()
observations = vmObservationsRepository.searchObservationsChilds(session, cd_ref)
session.close()
return jsonify(observations)

if not current_app.config['AFFICHAGE_MAILLE']:
@api.route("/observations/<insee>/<int:cd_ref>", methods=["GET"])
def getObservationsCommuneTaxonAPI(insee, cd_ref):
connection = utils.engine.connect()
observations = vmObservationsRepository.getObservationTaxonCommune(
connection, insee, cd_ref
)
connection.close()
return jsonify(observations)


@api.route("/observationsMaille/<insee>/<int:cd_ref>", methods=["GET"])
Expand Down
2 changes: 1 addition & 1 deletion atlas/configuration/config.py.example
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ AFFICHAGE_EN_CE_MOMENT = True

AFFICHAGE_RANG_STAT = True
COLONNES_RANG_STAT = 3
RANG_STAT = [{'phylum': ["Arthropoda", "Mollusca"]}, {'phylum': ["Chordata"]}, {'regne': ["Plantae"]}]
RANG_STAT = [{'phylum': ["Arthropoda", "Mollusca", "Annelida", "Cnidaria", "Platyhelminthes"]]}, {'phylum': ["Chordata"]}, {'regne': ["Plantae"]}]
RANG_STAT_FR = ['Faune invertébrée', 'Faune vertébrée', 'Flore']


Expand Down
16 changes: 8 additions & 8 deletions atlas/configuration/settings.ini.sample
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

# ................................
# GeoNature-atlas
# PostgreSQL database settings
#.................................
# ................................

# Effacer la base de données existante lors de l'installation
drop_apps_db=false
Expand All @@ -15,15 +15,15 @@ db_port=5432
# Nom de la base de données de l'application
db_name=geonatureatlas

# Nom de l'utilisateur BDD, utilisé par l'application, lecteur des vues matérialisées uniquement
# Nom de l'utilisateur BDD, utilisé par l'application atlas, lecteur des vues matérialisées uniquement
user_pg=geonatatlas

# Nom du propriétaire de la BDD, utilisé pour créer et mettre à jour la BDD
owner_atlas=geonatuser

# Password de l'utilisateur de l'application
# Password de l'utilisateur BDD, utilisé par l'application, lecteur des vues matérialisées uniquement
user_pg_pass=monpassachanger

# Nom du propriétaire de la BDD atlas, utilisé pour créer et mettre à jour la BDD
owner_atlas=geonatadmin

# Password du propriétaire de la BDD
owner_atlas_pass=monpassachanger

Expand Down Expand Up @@ -52,7 +52,7 @@ db_source_port=5432
db_source_name=geonature2db

# Nom de l'utilisateur atlas dans la BDD GeoNature source (lecture seule)
atlas_source_user=geonatuser
atlas_source_user=geonatatlas

# Pass de l'utilisateur atlas dans la BDD GeoNature source (lecture seule)
atlas_source_pass=monpassachanger
Expand Down
3 changes: 1 addition & 2 deletions atlas/modeles/repositories/vmTaxrefRepository.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def getSynonymy(connection, cd_ref):


def getTaxon(session, cd_nom):
taxon = (
return (
session.query(
VmTaxref.lb_nom,
VmTaxref.id_rang,
Expand All @@ -119,7 +119,6 @@ def getTaxon(session, cd_nom):
.filter(VmTaxref.cd_nom == cd_nom)
.one_or_none()
)
return None


def getCd_sup(session, cd_ref):
Expand Down
20 changes: 9 additions & 11 deletions data/gn2/atlas_ref_geo.sql
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@

--################################
--###COMMUNES
--###Communes
--################################


-- Suppression si temporaire des communes la table existe
DO $$
BEGIN
Expand All @@ -23,15 +21,11 @@ CREATE MATERIALIZED VIEW atlas.l_communes AS
WHERE enable=true
WITH DATA;


CREATE INDEX index_gist_l_communes_the_geom
ON atlas.l_communes
USING gist
(the_geom);

-- Index: atlas.l_communes_insee_idx

-- DROP INDEX atlas.l_communes_insee_idx;

CREATE UNIQUE INDEX l_communes_insee_idx
ON atlas.l_communes
Expand All @@ -52,7 +46,6 @@ EXCEPTION WHEN others THEN
RAISE NOTICE 'view atlas.t_mailles_territoire does not exist';
END$$;


CREATE MATERIALIZED VIEW atlas.t_mailles_territoire AS
SELECT st_transform(c.geom, 3857)::geometry('MultiPolygon',3857) as the_geom,
st_asgeojson(st_transform(c.geom, 4326)) AS geojson_maille,
Expand All @@ -62,6 +55,9 @@ JOIN ref_geo.bib_areas_types t
ON t.id_type = c.id_type
WHERE t.type_code = :type_maille;

CREATE UNIQUE INDEX t_mailles_territoire_id_maille_idx
ON atlas.t_mailles_territoire
USING btree (id_maille);


--################################
Expand All @@ -74,7 +70,7 @@ DO $$
BEGIN
DROP TABLE atlas.t_layer_territoire;
EXCEPTION WHEN others THEN
RAISE NOTICE 'view atlas.t_mailles_territoire does not exist';
RAISE NOTICE 'view atlas.t_layer_territoire does not exist';
END$$;


Expand All @@ -99,8 +95,10 @@ CREATE INDEX index_gist_t_layer_territoire_the_geom
ON atlas.t_layer_territoire
USING gist
(the_geom);



CREATE UNIQUE INDEX t_layer_territoire_gid_idx
ON atlas.t_layer_territoire
USING btree (gid);


-- Rafraichissement des vues contenant les données de l'atlas
Expand Down
8 changes: 8 additions & 0 deletions data/update_1.4.1to1.4.2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
--index uniques manquants sur 2 vues matérialisées
CREATE UNIQUE INDEX t_layer_territoire_gid_idx
ON atlas.t_layer_territoire
USING btree (gid);

CREATE UNIQUE INDEX t_mailles_territoire_id_maille_idx
ON atlas.t_mailles_territoire
USING btree (id_maille);
20 changes: 20 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,26 @@
CHANGELOG
=========

1.4.2 (2020-11-25)
------------------

**🐛 Corrections**

* Désactivation de la route des observations ponctuelles quand l'atlas est paramétre en mode mailles (#237 par @lpofredc)
* Correction de l'affichage des rangs taxonomiques sur les fiches espèces
* Ajout d'index sur les vues matérialisées ``atlas.t_layer_territoire`` et ``atlas.t_mailles_territoire`` pour pouvoir les rafraichir en parallèle (#254 et #260)
* Correction des observations dupliquées dans les fiches communes (#225 par @jpm-cbna)
* Correction des liens vers les fiches espèce depuis la carte de la page d'accueil en mode mailles (#221 par @jpm-cbna et @lpofredc)
* Correction du spinner pour la recherche par commune (#227 par @jpm-cbna)
* Corrections CSS supprimant un scroll horizontal global (par @jpm-cbna) et un problème de positionnement sur la page de présentation
* Mise à jour de la dépendance Python ``SQLAlchemy`` en version 1.3.19
* Clarification de la documentation et du fichier d'exemple de ``settings.ini``

**⚠️ Notes de version**

* Si vous mettez à jour l'application, exécutez le script SQL de mise à jour de la BDD : https://github.com/PnX-SI/GeoNature-atlas/blob/master/data/update_1.4.1to1.4.2.sql
* Suivez la procédure classique de mise à jour : https://github.com/PnX-SI/GeoNature-atlas/blob/master/docs/installation.rst#mise-%C3%A0-jour-de-lapplication

1.4.1 (2019-10-09)
------------------

Expand Down
66 changes: 27 additions & 39 deletions docs/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ Vous pouvez renommer le dossier qui contient l'application (dans un dossier ``/h

Le script ``install_env.sh`` va automatiquement installer les outils nécessaires à l'application si ils ne sont pas déjà sur le serveur :

- PostgreSQL 9.6+
- PostGIS 2.3+
- PostgreSQL
- PostGIS
- Apache 2
- Python 3 et GDAL
- Supervisor
Expand All @@ -96,52 +96,40 @@ Faites une copie du modèle de fichier de configuration de la BDD et de son inst
cp settings.ini.sample settings.ini
nano settings.ini

:note:

Suivez bien les indications en commentaire dans ce fichier.

:note:
NOTES :

Attention à ne pas mettre de 'quote' dans les valeurs, même pour les chaines de caractères.
* Suivez bien les indications en commentaire dans ce fichier.

:note:

Dans le cas où vous vous souhaitez connecter l'atlas à une BDD distante de GeoNature v2, il faut au préalable créer un utilisateur spécifique pour l'atlas dans cette dernière (lecture seule).

:note:
* Attention à ne pas mettre de 'quote' dans les valeurs, même pour les chaines de caractères.

Se connecter en SSH au serveur hébergeant la BDD mère de GeoNature v2 et lancez les commandes suivantes en les adaptant. Faire ensuite correspondre avec les paramètres concernés dans le fichier ``settings.ini`` (``atlas_source_user`` et ``atlas_source_pass``) :
* Dans le cas où vous souhaitez connecter l'atlas à une BDD distante de GeoNature v2, il faut au préalable créer un utilisateur spécifique pour l'atlas dans cette dernière (lecture seule). Pour cela se connecter en SSH au serveur hébergeant la BDD mère de GeoNature v2 et lancez les commandes suivantes en les adaptant. Faire ensuite correspondre avec les paramètres concernés dans le fichier ``settings.ini`` (``atlas_source_user`` et ``atlas_source_pass``) :

::

sudo su - postgres
psql
CREATE USER geonatatlas WITH ENCRYPTED PASSWORD 'monpassachanger';
GRANT USAGE ON SCHEMA gn_synthese, ref_geo, ref_nomenclatures, taxonomie TO geonatatlas;
GRANT SELECT ON ALL TABLES IN SCHEMA gn_synthese, ref_geo, ref_nomenclatures, taxonomie TO geonatatlas;
\q
exit
::

:note:
sudo su - postgres
psql
CREATE USER geonatatlas WITH ENCRYPTED PASSWORD 'monpassachanger';
\c geonature2db
GRANT USAGE ON SCHEMA gn_synthese, ref_geo, ref_nomenclatures, taxonomie TO geonatatlas;
GRANT SELECT ON ALL TABLES IN SCHEMA gn_synthese, ref_geo, ref_nomenclatures, taxonomie TO geonatatlas;
\q
exit

GeoNature-atlas fonctionne avec des données géographiques qui doivent être fournies en amont (mailles, limite de territoire, limite de communes). Vous avez la possibilité de récupérer ces données directement depuis le référentiel géographique de GeoNature si les données y sont présentes (``use_ref_geo_gn2=true``); ou de fournir des fichiers shapefiles (à mettre dans le répertoire ``data/ref``)
* GeoNature-atlas fonctionne avec des données géographiques qui doivent être fournies en amont (mailles, limite de territoire, limite de communes). Vous avez la possibilité de récupérer ces données directement depuis le référentiel géographique de GeoNature si les données y sont présentes (``use_ref_geo_gn2=true``); ou de fournir des fichiers shapefiles (à mettre dans le répertoire ``data/ref``)

:note:

**Attention** si ``use_ref_geo_gn2=true``. Par défaut le ``ref_geo`` contient l'ensemble des communes de France, ce qui ralentit fortement l'installation lorsqu'on construit la vue matérialisée ``vm_communes`` (qui intersecte les communes avec les limites du territoire).
**Attention** si ``use_ref_geo_gn2=true``. Par défaut le ``ref_geo`` contient l'ensemble des communes de France, ce qui ralentit fortement l'installation lorsqu'on construit la vue matérialisée ``vm_communes`` (qui intersecte les communes avec les limites du territoire).

Pour accelérer l'installation, vous pouvez "désactiver" certaines communes du ``ref_geo``, dont vous ne vous servez pas. Voir l'exemple de requête ci-dessous :
Pour accelérer l'installation, vous pouvez "désactiver" certaines communes du ``ref_geo``, dont vous ne vous servez pas. Voir l'exemple de requête ci-dessous :

::
::

UPDATE ref_geo.l_areas set enable = false where id_type = 25 AND id_area NOT in (
select a.id_area from ref_geo.l_areas a
join ref_geo.li_municipalities m ON a.id_area = m.id_area
where insee_dep in ('MON_CODE_DEPARTEMENT', 'MON_CODE_DEPARTEMENT_BIS')
)
UPDATE ref_geo.l_areas set enable = false where id_type = 25 AND id_area NOT in (
select a.id_area from ref_geo.l_areas a
join ref_geo.li_municipalities m ON a.id_area = m.id_area
where insee_dep in ('MON_CODE_DEPARTEMENT', 'MON_CODE_DEPARTEMENT_BIS')
)

Si votre territoire est celui de toute la France, préférez une installation en fournissant une couche SHP des communes (sans connection au ``ref_geo``)
Si votre territoire est celui de toute la France, préférez une installation en fournissant une couche SHP des communes (sans connection au ``ref_geo``)

:note:

Expand Down Expand Up @@ -170,7 +158,7 @@ Lancez le fichier fichier d'installation de la base de données :
::

cd /home/`whoami`/atlas
sudo ./install_db.sh
./install_db.sh


:notes:
Expand All @@ -186,7 +174,7 @@ Si vous souhaitez uniquement recréer la vue ``atlas.vm_observations`` et les 6

:notes:

Un mécanisme de dégradation des données est fournit par défaut dans GeoNature-atlas, voir la documentation à ce sujet: `<degradation_donnees.rst.rst>`_
Un mécanisme de dégradation des données est fourni par défaut dans GeoNature-atlas, voir la documentation à ce sujet : `<degradation_donnees.rst>`_

**5. Installation de l'application**

Expand Down
10 changes: 5 additions & 5 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
Click==7.0
dominate==2.3.5
Flask==1.1.1
Flask-Compress==1.4.0
Flask-Script==2.0.6
Flask-SQLAlchemy==2.4.0
Flask==1.1.1
GeoAlchemy2==0.6.3
geojson==2.4.1
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
psycopg2==2.7.5
SQLAlchemy==1.3.5
marshmallow==2.19.5
psycopg2==2.8.5
SQLAlchemy==1.3.19
visitor==0.1.3
Werkzeug==0.15.4
marshmallow==2.19.5
geojson==2.4.1

Loading

0 comments on commit 7ff96e7

Please sign in to comment.