Territoire vie santé (TVS)
This visualization displays the French "Territoires vie santé" (TVS) boundaries, aggregating communal administrative units into larger health-related regions. It shows the relationship between individual municipalities and their associated TVS zones, with contours generated by dissolving commune polygons based on shared TVS codes. The map employs WebGL for smooth rendering of the geographic data. Built with Vue, it loads GeoJSON data containing commune geometries and their TVS assignments, using mapshaper for geometric processing and the ouvre-contours-administratifs dataset as the underlying source.
AI-generated descriptionTerritoire vie santé (TVS)
Source de données
https://drees.shinyapps.io/carto-apl/_w_2acfc377/#tab-9818-3 puis dans l'onglet téléchargement, pris le fichier xlsx Correspondance_communes_tvs_2022.xlsx depuis le lien "Télécharger la table de correspondance communes - territoires de vie-santé :" le 24 juillet 2023
Transformé en CSV portant le nom correspondance_communes_tvs_2022.csv
Récupération des communes
wget -O communes-5m-2022.geojson http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/2022/geojson/communes-5m.geojson
Analyse pour voir comment la jointure "va se passer"
Pour comparer les codes
jq -r -c .features[].properties.code communes-5m-2022.geojson | sort >| communes-5m-2022_list.txt
xsv select code_com correspondance_communes_tvs_2022.csv | sed '1d' | sort >| communes-tvs-2022_list.txt
meld communes-*list.txt
Génération d'un fichier des communes avec le code des TVS
mapshaper communes-5m-2022.geojson -join correspondance_communes_tvs_2022.csv keys=code,code_com field-types=code:str,code_com:str,code_tvs:str -o tvs_par_commune.geojson
Préparation pour enlever les codes communes de Paris, Lyon, Marseille en faveur de leurs arrondissements
# On exclue les communes de Paris, Lyon, Marseille en faveur de leurs arrondissements
# Faisable avec ogr2ogr avec un where ou un requete SQL
jq -r -c .features[] tvs_par_commune.geojson | grep -v -e '"code":"13055"' -e '"code":"69123"' -e '"code":"75056"' - | jq --slurp '{"type": "FeatureCollection","features": .}' >| tvs_communes.geojson
zip tvs_communes.geojson.zip tvs_communes.geojson
Nettoyage de quelques fichiers
rm communes-5m-2022.geojson
rm *list.txt
Fusion des communes pour obtenir les contours TVS
mapshaper tvs_communes.geojson -dissolve code_tvs copy-fields=code_tvs,lib_tvs -o tvs_areas_2022.geojson
# Création shp pour ceux qui préfère cela à un GeoJSON
ogr2ogr tvs_areas_2022.shp tvs_areas_2022.geojson -lco ENCODING=UTF-8
ogrinfo --config CPL_DEBUG ON -sql "CREATE SPATIAL INDEX ON tvs_areas_2022" tvs_areas_2022.shp
zip tvs_areas_2022.zip tvs_areas_2022.cpg tvs_areas_2022.geojson tvs_areas_2022.qix tvs_areas_2022.shx tvs_areas_2022.dbf tvs_areas_2022.prj tvs_areas_2022.shp
zip tvs_areas_2022.geojson.zip tvs_areas_2022.geojson
rm tvs_areas_2022.geojson tvs_communes.geojson tvs_par_commune.geojson
rm tvs_areas_2022.cpg tvs_areas_2022.geojson tvs_areas_2022.qix tvs_areas_2022.shx tvs_areas_2022.dbf tvs_areas_2022.prj tvs_areas_2022.shp
Livrables exploitables
A la fin, les fichiers utiles que nous avons conservés sont:
- les contours communaux des communes avec le code et le libellé des TVS
- les contours TVS issus des communes fusionnées depuis les codes TVS. Un polygone avec un code tvs
nullcontient les communes fusionnées sans code tvs associées - le fichier zip qui contient un fichier shp avec ses fichiers associées
- le fichier source original de données de correspondances entre codes communes et codes TVS et le CSV avec le même contenu mais des "headers" changés