From 9085da283701edbb01b4774b5f6f348ee3e7835d Mon Sep 17 00:00:00 2001 From: lpofredc Date: Tue, 23 Apr 2024 17:21:25 +0200 Subject: [PATCH 1/7] fix#24 - add missing inpn grids --- .../10a587fb63d1_ref_geo_inpn_grids_20.py | 53 ++++++++++++++++++ .../175cdb17343f_ref_geo_inpn_grids_2.py | 53 ++++++++++++++++++ .../4d0c35ea0cfe_ref_geo_inpn_grids_50.py | 54 +++++++++++++++++++ 3 files changed, 160 insertions(+) create mode 100644 src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py create mode 100644 src/ref_geo/migrations/versions/175cdb17343f_ref_geo_inpn_grids_2.py create mode 100644 src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py diff --git a/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py b/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py new file mode 100644 index 0000000..bd9080b --- /dev/null +++ b/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py @@ -0,0 +1,53 @@ +"""ref_geo_inpn_grids_20 + +Revision ID: 10a587fb63d1 +Create Date: 2024-04-23 16:14:56.846732 + +""" +from alembic import op + +from utils_flask_sqla.migrations.utils import logger, open_remote_file +from ref_geo.migrations.utils import ( + schema, + create_temporary_grids_table, + delete_area_with_type, + insert_grids_and_drop_temporary_table, +) + + +# revision identifiers, used by Alembic. +revision = '10a587fb63d1' +down_revision = None +branch_labels = ("ref_geo_inpn_grids_20",) +depends_on = "6afe74833ed0" + +grid = "20" +filename = f"inpn_grids_{grid}.csv.xz" +base_url = "http://localhost/inpn/" +temp_table_name = f"temp_grids_{grid}" +area_type = f"M{grid}" + + +def upgrade(): + op.execute( + f""" +INSERT INTO {schema}.bib_areas_types (type_name, + type_code, + type_desc, + ref_name, + ref_version, + num_version) +VALUES ('Mailles {grid}*{grid}', 'M{grid}', 'Type maille INPN {grid}*{grid}km', NULL, NULL, NULL) +ON CONFLICT (type_code) DO NOTHING; + """ + ) + create_temporary_grids_table(schema, temp_table_name) + cursor = op.get_bind().connection.cursor() + with open_remote_file(base_url, filename) as geofile: + logger.info("Inserting grids data in temporary table…") + cursor.copy_expert(f"COPY {schema}.{temp_table_name} FROM STDIN", geofile) + insert_grids_and_drop_temporary_table(schema, temp_table_name, area_type) + + +def downgrade(): + delete_area_with_type(area_type) \ No newline at end of file diff --git a/src/ref_geo/migrations/versions/175cdb17343f_ref_geo_inpn_grids_2.py b/src/ref_geo/migrations/versions/175cdb17343f_ref_geo_inpn_grids_2.py new file mode 100644 index 0000000..c74f60f --- /dev/null +++ b/src/ref_geo/migrations/versions/175cdb17343f_ref_geo_inpn_grids_2.py @@ -0,0 +1,53 @@ +"""Insert INPN 2x2 grids in ref_geo + +Revision ID: 175cdb17343f +Create Date: 2024-04-23 16:15:17.317930 + +""" + +from alembic import op + +from utils_flask_sqla.migrations.utils import logger, open_remote_file +from ref_geo.migrations.utils import ( + schema, + create_temporary_grids_table, + delete_area_with_type, + insert_grids_and_drop_temporary_table, +) + +# revision identifiers, used by Alembic. +revision = "175cdb17343f" +down_revision = None +branch_labels = ("ref_geo_inpn_grids_2",) +depends_on = "6afe74833ed0" + +grid = "2" +filename = f"inpn_grids_{grid}.csv.xz" +base_url = "http://localhost/inpn/" +temp_table_name = f"temp_grids_{grid}" +area_type = f"M{grid}" + + +def upgrade(): + op.execute( + f""" +INSERT INTO {schema}.bib_areas_types (type_name, + type_code, + type_desc, + ref_name, + ref_version, + num_version) +VALUES ('Mailles {grid}*{grid}', 'M{grid}', 'Type maille INPN {grid}*{grid}km', NULL, NULL, NULL) +ON CONFLICT (type_code) DO NOTHING; + """ + ) + create_temporary_grids_table(schema, temp_table_name) + cursor = op.get_bind().connection.cursor() + with open_remote_file(base_url, filename) as geofile: + logger.info("Inserting grids data in temporary table…") + cursor.copy_expert(f"COPY {schema}.{temp_table_name} FROM STDIN", geofile) + insert_grids_and_drop_temporary_table(schema, temp_table_name, area_type) + + +def downgrade(): + delete_area_with_type(area_type) diff --git a/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py b/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py new file mode 100644 index 0000000..035778f --- /dev/null +++ b/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py @@ -0,0 +1,54 @@ +"""ref_geo_inpn_grids_50 + +Revision ID: 4d0c35ea0cfe +Create Date: 2024-04-23 16:15:26.220548 + +""" + +from alembic import op + +from utils_flask_sqla.migrations.utils import logger, open_remote_file +from ref_geo.migrations.utils import ( + schema, + create_temporary_grids_table, + delete_area_with_type, + insert_grids_and_drop_temporary_table, +) + + +# revision identifiers, used by Alembic. +revision = "4d0c35ea0cfe" +down_revision = None +branch_labels = ("ref_geo_inpn_grids_50",) +depends_on = "6afe74833ed0" + +grid = "50" +filename = f"inpn_grids_{grid}.csv.xz" +base_url = "http://localhost/inpn/" +temp_table_name = f"temp_grids_{grid}" +area_type = f"M{grid}" + + +def upgrade(): + op.execute( + f""" +INSERT INTO {schema}.bib_areas_types (type_name, + type_code, + type_desc, + ref_name, + ref_version, + num_version) +VALUES ('Mailles {grid}*{grid}', 'M{grid}', 'Type maille INPN {grid}*{grid}km', NULL, NULL, NULL) +ON CONFLICT (type_code) DO NOTHING; + """ + ) + create_temporary_grids_table(schema, temp_table_name) + cursor = op.get_bind().connection.cursor() + with open_remote_file(base_url, filename) as geofile: + logger.info("Inserting grids data in temporary table…") + cursor.copy_expert(f"COPY {schema}.{temp_table_name} FROM STDIN", geofile) + insert_grids_and_drop_temporary_table(schema, temp_table_name, area_type) + + +def downgrade(): + delete_area_with_type(area_type) From cd4626a480484d80376c4db4c2918bfbf1f8d21d Mon Sep 17 00:00:00 2001 From: lpofredc Date: Tue, 23 Apr 2024 17:22:22 +0200 Subject: [PATCH 2/7] update CHANGELOG/VERSION --- CHANGELOG.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f24595f..43be31c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,20 +1,28 @@ CHANGELOG ========= +1.5.4-unreleased (2024-04-xx) +----------------------------- + +- Ajout des Mailles officielles manquantes, utilisées par la nouvelle version du +référentiel de sensibilité (2x2km, 20x20km, 50x50km) + + 1.5.3 (2024-05-23) ------------------ **🐛 Corrections** - Correction de l'intégration des paramètres de type `list` dans la route `/areas` (#26) - -1.5.2 (2024-04-10) + +1.5.2 (2024-09-10) +>>>>>>> 7d697bc (update CHANGELOG/VERSION) ------------------ **🚀 Nouveautés** - - Possibilité d'appeler la route `GET/areas` sans retourner les géométries (#22) +- Possibilité d'appeler la route `GET/areas` sans retourner les géométries (#22) 1.5.1 (2024-01-29) ------------------ From ffe5765ebf13b9bd00bd51ba0c915286d8bb037b Mon Sep 17 00:00:00 2001 From: lpofredc Date: Tue, 23 Apr 2024 17:23:44 +0200 Subject: [PATCH 3/7] apply black --- .../versions/10a587fb63d1_ref_geo_inpn_grids_20.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py b/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py index bd9080b..803b3ad 100644 --- a/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py +++ b/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py @@ -4,6 +4,7 @@ Create Date: 2024-04-23 16:14:56.846732 """ + from alembic import op from utils_flask_sqla.migrations.utils import logger, open_remote_file @@ -16,7 +17,7 @@ # revision identifiers, used by Alembic. -revision = '10a587fb63d1' +revision = "10a587fb63d1" down_revision = None branch_labels = ("ref_geo_inpn_grids_20",) depends_on = "6afe74833ed0" @@ -50,4 +51,4 @@ def upgrade(): def downgrade(): - delete_area_with_type(area_type) \ No newline at end of file + delete_area_with_type(area_type) From 30c32e9a4228e6dbeb52f925b7967410aac092cb Mon Sep 17 00:00:00 2001 From: lpofredc Date: Tue, 23 Apr 2024 17:35:11 +0200 Subject: [PATCH 4/7] add version note --- CHANGELOG.md | 14 +++++++++++++- README.md | 33 +++++++++++++++++++-------------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43be31c..8e62520 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,18 @@ CHANGELOG - Ajout des Mailles officielles manquantes, utilisées par la nouvelle version du référentiel de sensibilité (2x2km, 20x20km, 50x50km) +**Note de version** + +Pour ajouter les nouvelles mailles, éxécuter les commandes suivantes: + +```sh +source venv/bin/activate +export SQLALCHEMY_DATABASE_URI="postgresql://user:password@localhost:543database" +cd src/ref_geo/migrations +alembic upgrade ref_geo_inpn_grids_2@head # Insertion du maillage 2x2km dl’hexagone fourni par l’INPN +alembic upgrade ref_geo_inpn_grids_20@head # Insertion du maillage 20x20kde l’hexagone fourni par l’INPN +alembic upgrade ref_geo_inpn_grids_50@head # Insertion du maillage 50x50kde l’hexagone fourni par l’INPN +``` 1.5.3 (2024-05-23) ------------------ @@ -17,7 +29,6 @@ référentiel de sensibilité (2x2km, 20x20km, 50x50km) 1.5.2 (2024-09-10) ->>>>>>> 7d697bc (update CHANGELOG/VERSION) ------------------ **🚀 Nouveautés** @@ -132,4 +143,5 @@ Externalisation du référentiel géographique de GeoNature 2.9.2. **🚀 Nouveautés** + * Le SRID local est déterminé automatiquement à partir du SRID de la colonne ``ref_geo.l_areas.geom``. diff --git a/README.md b/README.md index 7093d0a..5b75a2b 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,22 @@ Prérequis : vous devez installer l’extension postgis sur votre base de donné Création et remplissage du référentiel géographique : - python3 -m venv venv - source venv/bin/activate - pip install -e . - pip install psycopg2 # for postgresql database - export SQLALCHEMY_DATABASE_URI="postgresql://user:password@localhost:5432/database" - cd src/ref_geo/migrations - alembic -x local-srid=2154 upgrade ref_geo@head - alembic upgrade ref_geo_fr_municipalities@head # Insertion des communes françaises - alembic upgrade ref_geo_fr_departments@head # Insertion des départements français - alembic upgrade ref_geo_fr_regions@head # Insertion des régions françaises - alembic upgrade ref_geo_fr_regions_1970@head # Insertion des anciennes régions françaises - alembic upgrade ref_geo_inpn_grids_1@head # Insertion du maillage 1×1km de l’hexagone fourni par l’INPN - alembic upgrade ref_geo_inpn_grids_5@head # Insertion du maillage 5×5km de l’hexagone fourni par l’INPN - alembic upgrade ref_geo_inpn_grids_10@head # Insertion du maillage 10×10km de l’hexagone fourni par l’INPN +```sh +python3 -m venv venv +source venv/bin/activate +pip install -e . +pip install psycopg2 # for postgresql database +export SQLALCHEMY_DATABASE_URI="postgresql://user:password@localhost:5432database" +cd src/ref_geo/migrations +alembic -x local-srid=2154 upgrade ref_geo@head +alembic upgrade ref_geo_fr_municipalities@head # Insertion des communesfrançaises +alembic upgrade ref_geo_fr_departments@head # Insertion des départementsfrançais +alembic upgrade ref_geo_fr_regions@head # Insertion des régions françaises +alembic upgrade ref_geo_fr_regions_1970@head # Insertion des anciennesrégions françaises +alembic upgrade ref_geo_inpn_grids_1@head # Insertion du maillage 1×1km del’hexagone fourni par l’INPN +alembic upgrade ref_geo_inpn_grids_2@head # Insertion du maillage 2x2km del’hexagone fourni par l’INPN +alembic upgrade ref_geo_inpn_grids_5@head # Insertion du maillage 5×5km del’hexagone fourni par l’INPN +alembic upgrade ref_geo_inpn_grids_10@head # Insertion du maillage 10×10kmde l’hexagone fourni par l’INPN +alembic upgrade ref_geo_inpn_grids_20@head # Insertion du maillage 20x20kmde l’hexagone fourni par l’INPN +alembic upgrade ref_geo_inpn_grids_50@head # Insertion du maillage 50x50kmde l’hexagone fourni par l’INPN +``` From 88d7e76ef40e709dec726a7240ee516c86e58a3b Mon Sep 17 00:00:00 2001 From: jacquesfize Date: Tue, 28 May 2024 13:54:16 +0200 Subject: [PATCH 5/7] update link of inpn grid source file --- .../migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py | 2 +- .../migrations/versions/175cdb17343f_ref_geo_inpn_grids_2.py | 2 +- .../migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py b/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py index 803b3ad..d2b7804 100644 --- a/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py +++ b/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py @@ -24,7 +24,7 @@ grid = "20" filename = f"inpn_grids_{grid}.csv.xz" -base_url = "http://localhost/inpn/" +base_url = "http://geonature.fr/data/inpn/layers/2024/" temp_table_name = f"temp_grids_{grid}" area_type = f"M{grid}" diff --git a/src/ref_geo/migrations/versions/175cdb17343f_ref_geo_inpn_grids_2.py b/src/ref_geo/migrations/versions/175cdb17343f_ref_geo_inpn_grids_2.py index c74f60f..505fc97 100644 --- a/src/ref_geo/migrations/versions/175cdb17343f_ref_geo_inpn_grids_2.py +++ b/src/ref_geo/migrations/versions/175cdb17343f_ref_geo_inpn_grids_2.py @@ -23,7 +23,7 @@ grid = "2" filename = f"inpn_grids_{grid}.csv.xz" -base_url = "http://localhost/inpn/" +base_url = "http://geonature.fr/data/inpn/layers/2024/" temp_table_name = f"temp_grids_{grid}" area_type = f"M{grid}" diff --git a/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py b/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py index 035778f..416a8e1 100644 --- a/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py +++ b/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py @@ -24,7 +24,7 @@ grid = "50" filename = f"inpn_grids_{grid}.csv.xz" -base_url = "http://localhost/inpn/" +base_url = "http://geonature.fr/data/inpn/layers/2024/" temp_table_name = f"temp_grids_{grid}" area_type = f"M{grid}" From 986eb48601ecaaa53efc3572fa35bb64ffefdeb4 Mon Sep 17 00:00:00 2001 From: jacquesfize Date: Tue, 28 May 2024 14:03:29 +0200 Subject: [PATCH 6/7] test ci with new migration --- .github/workflows/pytest.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index c6aa1a9..014835a 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -86,6 +86,7 @@ jobs: flask db upgrade ref_geo@head -x local-srid=2154 flask db upgrade ref_geo_fr_municipalities@head flask db upgrade ref_geo_inpn_grids_5@head + flask db upgrade ref_geo_inpn_grids_20@head - name: Show database status run: | flask db status From abf17d412031e9a60496903ab1207a3b20682218 Mon Sep 17 00:00:00 2001 From: jacquesfize Date: Tue, 28 May 2024 14:22:02 +0200 Subject: [PATCH 7/7] correct typo --- CHANGELOG.md | 12 ++++++------ .../versions/10a587fb63d1_ref_geo_inpn_grids_20.py | 2 +- .../versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e62520..7f42ccd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,20 +4,20 @@ CHANGELOG 1.5.4-unreleased (2024-04-xx) ----------------------------- -- Ajout des Mailles officielles manquantes, utilisées par la nouvelle version du +- Ajout des nouvelles mailles officielles de l'INPN en métropole, utilisées par la nouvelle version du référentiel de sensibilité (2x2km, 20x20km, 50x50km) -**Note de version** +**⚠️ Notes de version** -Pour ajouter les nouvelles mailles, éxécuter les commandes suivantes: +Si vous n'utilisez pas GeoNature, pour ajouter les nouvelles mailles, exécuter les commandes suivantes : ```sh source venv/bin/activate export SQLALCHEMY_DATABASE_URI="postgresql://user:password@localhost:543database" cd src/ref_geo/migrations -alembic upgrade ref_geo_inpn_grids_2@head # Insertion du maillage 2x2km dl’hexagone fourni par l’INPN -alembic upgrade ref_geo_inpn_grids_20@head # Insertion du maillage 20x20kde l’hexagone fourni par l’INPN -alembic upgrade ref_geo_inpn_grids_50@head # Insertion du maillage 50x50kde l’hexagone fourni par l’INPN +alembic upgrade ref_geo_inpn_grids_2@head # Insertion des mailles 2x2km métropole, fournies par l’INPN +alembic upgrade ref_geo_inpn_grids_20@head # Insertion des mailles 20x20km métropole, fournies par l’INPN +alembic upgrade ref_geo_inpn_grids_50@head # Insertion des mailles 50x50km métropole, fournies par l’INPN ``` 1.5.3 (2024-05-23) diff --git a/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py b/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py index d2b7804..520c9b5 100644 --- a/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py +++ b/src/ref_geo/migrations/versions/10a587fb63d1_ref_geo_inpn_grids_20.py @@ -1,4 +1,4 @@ -"""ref_geo_inpn_grids_20 +"""Insert INPN 20×20 grids in ref_geo Revision ID: 10a587fb63d1 Create Date: 2024-04-23 16:14:56.846732 diff --git a/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py b/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py index 416a8e1..0fc05e7 100644 --- a/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py +++ b/src/ref_geo/migrations/versions/4d0c35ea0cfe_ref_geo_inpn_grids_50.py @@ -1,4 +1,4 @@ -"""ref_geo_inpn_grids_50 +"""Insert INPN 50×50 grids in ref_geo Revision ID: 4d0c35ea0cfe Create Date: 2024-04-23 16:15:26.220548