Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cog 2023 #33

Merged
merged 6 commits into from
Feb 23, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# contours-administratifs

WARNING: Les données produites ont pu être déduites de l'édition AdminExpress 2022. Les communes associées et déléguées sont tirées directement du produit Admin Express COG. Ce dernier n'est pas encore sorti pour 2023. Nous les intégrerons dès publication de l'IGN.

Script permettant de générer les principaux contours administratifs selon différents niveaux de généralisation.

## Présentation
Expand Down Expand Up @@ -46,10 +48,32 @@ yarn prepare-sources

### Génération des données + généralisation

```
```bash
yarn build
```

Si vous voulez générer les communes associées ou déléguées, vous devez executer la même commande avec la variable d'environnement `COMMUNES_ASSOCIEES_DELEGUEES`

```
COMMUNES_ASSOCIEES_DELEGUEES=YES yarn run build
```

Pour compresser les fichiers en gz avant envoi, faire

```bash
cd dist
for i in *.geojson;
do gzip -k $i;
done;
cd ..
```

Pour déployer, faire en changeant `alias_ssh:/chemin_dossier/annee/geojson/`

```bash
scp dist/*.geojson* alias_ssh:/chemin_dossier/annee/geojson/
```

### Mise à disposition des sources sous forme de tuiles vecteur

Nous générons des tuiles vectorielles depuis les fichiers de contour. Elles sont servies depuis https://openmaptiles.geo.data.gouv.fr/data/decoupage-administratif/#4.63/46.18/-1.66
Expand Down
11 changes: 7 additions & 4 deletions build.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ async function computeCommunesIndex(featuresFiles, interval) {
if (geometry) {
geometries.push(geometry)
codes.push(ancienCode)
console.log(commune.code, ancienCode)
}
}
}
Expand Down Expand Up @@ -295,10 +296,12 @@ async function main() {
'COMMUNE_ASSOCIEE_OU_DELEGUEE.shx'
])

await buildContoursCommunesAssocieesDeleguees(featuresCommunesAssocieesDelegueesFiles, 1000)
await buildContoursCommunesAssocieesDeleguees(featuresCommunesAssocieesDelegueesFiles, 100)
await buildContoursCommunesAssocieesDeleguees(featuresCommunesAssocieesDelegueesFiles, 50)
await buildContoursCommunesAssocieesDeleguees(featuresCommunesAssocieesDelegueesFiles, 5)
if (process.env.COMMUNES_ASSOCIEES_DELEGUEES) {
await buildContoursCommunesAssocieesDeleguees(featuresCommunesAssocieesDelegueesFiles, 1000)
await buildContoursCommunesAssocieesDeleguees(featuresCommunesAssocieesDelegueesFiles, 100)
await buildContoursCommunesAssocieesDeleguees(featuresCommunesAssocieesDelegueesFiles, 50)
await buildContoursCommunesAssocieesDeleguees(featuresCommunesAssocieesDelegueesFiles, 5)
}
await buildContours(featuresFiles, 1000)
await buildContours(featuresFiles, 100)
await buildContours(featuresFiles, 50)
Expand Down
4 changes: 2 additions & 2 deletions generate-mairie.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ cd data

rm chflieu_*.geojson

# Mairies communes métropole sans les communes mortes pour la France
# Mairies communes métropole sans les communes mortes pour la France + correction manuelle pour passage 2022 à 2023
ogr2ogr -f GeoJSON \
-dialect SQLite \
-sql "SELECT \"INSEE_COM\" AS commune, \"COMMUNE\".\"NOM\" AS nom, CASE WHEN chf.geometry IS NULL THEN 'centre' ELSE 'mairie' END AS type, CASE WHEN chf.geometry IS NULL THEN PointOnSurface(\"COMMUNE\".geometry) ELSE chf.geometry END AS geometry FROM \"COMMUNE\" LEFT JOIN 'CHFLIEU_COMMUNE.shp'.\"CHFLIEU_COMMUNE\" chf ON chf.\"ID_COM\" = \"COMMUNE\".\"ID\" WHERE \"INSEE_COM\" NOT IN ('55189', '55039', '55050', '55239', '55307', '55139')" \
-sql "SELECT CASE WHEN \"INSEE_COM\" = '27058' THEN '27676' else \"INSEE_COM\" END AS commune, \"COMMUNE\".\"NOM\" AS nom, CASE WHEN chf.geometry IS NULL THEN 'centre' ELSE 'mairie' END AS type, CASE WHEN chf.geometry IS NULL THEN PointOnSurface(\"COMMUNE\".geometry) ELSE chf.geometry END AS geometry FROM \"COMMUNE\" LEFT JOIN 'CHFLIEU_COMMUNE.shp'.\"CHFLIEU_COMMUNE\" chf ON chf.\"ID_COM\" = \"COMMUNE\".\"ID\" WHERE \"INSEE_COM\" NOT IN ('55189', '55039', '55050', '55239', '55307', '55139', '01039', '02077', '09255', '16140', '50015', '51063', '51637', '71492', '85037', '85053')" \
chflieu_commune.geojson \
COMMUNE.shp \
-lco RFC7946=YES \
Expand Down
32 changes: 22 additions & 10 deletions generate-mbtiles.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
#!/bin/bash
COMMUNES_ASSOCIEES_DELEGUEES=${COMMUNES_ASSOCIEES_DELEGUEES:-NO}
YEAR=${YEAR:-latest}
echo "Téléchargement des fichiers sources"
mkdir -p sources
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/latest/geojson/communes-5m.geojson.gz
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/latest/geojson/communes-associees-deleguees-5m.geojson.gz
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/latest/geojson/departements-5m.geojson.gz
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/latest/geojson/regions-5m.geojson.gz
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/latest/geojson/epci-5m.geojson.gz
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/latest/geojson/mairies.geojson.gz
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/${YEAR}/geojson/communes-5m.geojson.gz
if [ "$COMMUNES_ASSOCIEES_DELEGUEES" != "NO" ]; then
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/${YEAR}/geojson/communes-associees-deleguees-5m.geojson.gz
fi
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/${YEAR}/geojson/departements-5m.geojson.gz
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/${YEAR}/geojson/regions-5m.geojson.gz
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/${YEAR}/geojson/epci-5m.geojson.gz
wget -P sources -N http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/${YEAR}/geojson/mairies.geojson.gz

echo "Génération des tuiles vectorielles découpage administratif"
mkdir -p dist
Expand All @@ -23,13 +27,21 @@ tippecanoe -l epcis --generate-ids --no-tile-stats --drop-densest-as-needed --de
echo "Communes"
tippecanoe -l communes --generate-ids --no-tile-stats --drop-densest-as-needed --detect-shared-borders -Z8 -z12 -f -o dist/communes.mbtiles sources/communes-5m.geojson.gz

echo "Communes associees ou deleguees"
tippecanoe -l communes_associees_deleguees --generate-ids --no-tile-stats --drop-densest-as-needed --detect-shared-borders -Z8 -z12 -f -o dist/communes-associees-deleguees.mbtiles sources/communes-associees-deleguees-5m.geojson.gz
if [ "$COMMUNES_ASSOCIEES_DELEGUEES" != "NO" ]; then
echo "Inclusion communes associees ou deleguees";
tippecanoe -l communes_associees_deleguees --generate-ids --no-tile-stats --drop-densest-as-needed --detect-shared-borders -Z8 -z12 -f -o dist/communes-associees-deleguees.mbtiles sources/communes-associees-deleguees-5m.geojson.gz;
else
echo "Exclusion communes associees ou deleguees";
fi


echo "Mairies"
tippecanoe -l mairies --generate-ids --no-tile-stats -r1 -Z8 -z12 -f -o dist/mairies.mbtiles sources/mairies.geojson.gz

echo "Merge des tuiles vectorielles"
tile-join --attribution=Etalab --name=decoupage-administratif --no-tile-size-limit --no-tile-stats -f --output dist/decoupage-administratif.mbtiles dist/mairies.mbtiles dist/communes.mbtiles dist/communes-associees-deleguees.mbtiles dist/epcis.mbtiles dist/departements.mbtiles dist/regions.mbtiles

if [ "$COMMUNES_ASSOCIEES_DELEGUEES" != "NO" ]; then
tile-join --attribution=Etalab --name=decoupage-administratif --no-tile-size-limit --no-tile-stats -f --output dist/decoupage-administratif.mbtiles dist/mairies.mbtiles dist/communes.mbtiles dist/communes-associees-deleguees.mbtiles dist/epcis.mbtiles dist/departements.mbtiles dist/regions.mbtiles;
else
tile-join --attribution=Etalab --name=decoupage-administratif --no-tile-size-limit --no-tile-stats -f --output dist/decoupage-administratif.mbtiles dist/mairies.mbtiles dist/communes.mbtiles dist/epcis.mbtiles dist/departements.mbtiles dist/regions.mbtiles;
fi
echo "Terminé"