Les établissements publics territoriaux (EPT) sont parmis les "EPCI sans fiscalité propre".
- Liste des codes communes depuis https://fr.wikipedia.org/wiki/%C3%89tablissement_public_territorial_Paris-Est-Marne_et_Bois
- Communes avec leur géométrie en version simplifiée 5m http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/2023/geojson/
- Fichier avec liste communale des EPT https://www.insee.fr/fr/information/2510634
list_insee=$(echo "94017
94015
94018
94033
94042
94058
94046
94052
94067
94068
94069
94079
94080
")
for i in $list_insee;
do wget -O commune-${i}.geojson "https://geo.api.gouv.fr/communes/$i?format=geojson&geometry=contour";
done;
jq --slurp '{"type": "FeatureCollection","features": .}' commune-*.geojson >| communes-all.geojson
mapshaper communes-all.geojson -dissolve -o format=geojson geojson-type=FeatureCollection ept-200057941.geojson
Utilise Python et les bibliothèques associées Pandas et Geopandas
import urllib
import geopandas as gpd
import pandas as pd
insee_remote_url = "https://www.insee.fr/fr/statistiques/fichier/2510634/ept_au_01-01-2023.xlsx"
insee_filename = insee_remote_url.split('/')[-1]
urllib.request.urlretrieve(insee_remote_url, insee_filename)
from openpyxl.styles.colors import WHITE, RGB
__old_rgb_set__ = RGB.__set__
def __rgb_set_fixed__(self, instance, value):
try:
__old_rgb_set__(self, instance, value)
except ValueError as e:
if e.args[0] == 'Colors must be aRGB hex values':
__old_rgb_set__(self, instance, WHITE) # Change color here
RGB.__set__ = __rgb_set_fixed__
xl = pd.ExcelFile(insee_filename)
xl.sheet_names # see all sheet names
df_composition_communale = xl.parse("Composition_communale", header=5)
df_composition_communale_short = df_composition_communale[['CODGEO', 'EPT', 'LIBEPT']]
df_composition_communale_short['CODGEO']= df_composition_communale_short['CODGEO'].astype(str)
gdf_communes = gpd.read_file("http://etalab-datasets.geo.data.gouv.fr/contours-administratifs/2023/geojson/communes-5m.geojson")
df_merged = communes.merge(df_composition_communale_short, left_on="code", right_on="CODGEO")
df_merged_short = df_merged[['geometry', 'CODGEO', 'EPT', 'LIBEPT']]
ept_zones = df_merged_short.dissolve(by=['EPT', 'LIBEPT'])
ept_zones.to_file("ept_2023.geojson", driver="GeoJSON")