Skip to content

Commit ce33d5d

Browse files
authored
Adapte les exemples de code de cartiflette (#482)
* update cartiflette * tuto geopandas * maps * install libmagic
1 parent 056c606 commit ce33d5d

File tree

5 files changed

+92
-66
lines changed

5 files changed

+92
-66
lines changed

content/manipulation/03_geopandas_TP.qmd

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ vous pouvez retirer les `!` en début de ligne):
9393
```{python}
9494
#| eval: false
9595
!pip install requests py7zr geopandas openpyxl tqdm s3fs PyYAML xlrd
96-
!pip install git+https://github.com/inseefrlab/cartiflette@80b8a5a28371feb6df31d55bcc2617948a5f9b1a
96+
!pip install git+https://github.com/inseefrlab/cartiflette
9797
```
9898

9999
Ces commandes permettent de récupérer l'ensemble du code
@@ -143,13 +143,13 @@ précédent.
143143
#| echo: true
144144
#| output: false
145145
!pip install requests py7zr geopandas openpyxl tqdm s3fs PyYAML xlrd
146-
!pip install git+https://github.com/inseefrlab/cartiflette@80b8a5a28371feb6df31d55bcc2617948a5f9b1a
146+
!pip install git+https://github.com/inseefrlab/cartiflette
147147
```
148148

149149
```{python}
150150
#| echo: true
151151
#| output: false
152-
from cartiflette.s3 import download_vectorfile_url_all
152+
from cartiflette.public import download_from_cartiflette
153153
```
154154

155155

@@ -188,11 +188,11 @@ de manière simplifiée grâce au _package_
188188
```{python}
189189
#| echo: true
190190
#| output: false
191-
communes_borders = download_vectorfile_url_all(
191+
communes_borders = download_from_cartiflette(
192192
crs = 4326,
193193
values = ["75", "92", "93", "94"],
194194
borders="COMMUNE",
195-
vectorfile_format="topojson",
195+
vectorfile_format="geojson",
196196
filter_by="DEPARTEMENT",
197197
source="EXPRESS-COG-CARTO-TERRITOIRE",
198198
year=2022)
@@ -235,11 +235,11 @@ Convertir en Lambert 93.
235235
#| output: false
236236
237237
# 1. Chargement des données de Cartiflette
238-
communes_borders = download_vectorfile_url_all(
238+
communes_borders = download_from_cartiflette(
239239
crs = 4326,
240240
values = ["75", "92", "93", "94"],
241241
borders="COMMUNE",
242-
vectorfile_format="topojson",
242+
vectorfile_format="geojson",
243243
filter_by="DEPARTEMENT",
244244
source="EXPRESS-COG-CARTO-TERRITOIRE",
245245
year=2022)
@@ -285,11 +285,11 @@ ax.set_axis_off()
285285
#| output: false
286286
287287
# 6. Chargement des données de Cartiflette
288-
petite_couronne = download_vectorfile_url_all(
288+
petite_couronne = download_from_cartiflette(
289289
crs = 4326,
290290
values = ["75", "92", "93", "94"],
291291
borders="COMMUNE_ARRONDISSEMENT",
292-
vectorfile_format="topojson",
292+
vectorfile_format="geojson",
293293
filter_by="DEPARTEMENT",
294294
source="EXPRESS-COG-CARTO-TERRITOIRE",
295295
year=2022)
@@ -337,14 +337,16 @@ pour récupérer les frontières françaises (découpées par région):
337337
```{python}
338338
#| output: false
339339
#| echo: true
340-
france = download_vectorfile_url_all(
341-
values = "metropole",
340+
france = download_from_cartiflette(
341+
values = ["France"],
342342
crs = 4326,
343343
borders = "REGION",
344-
vectorfile_format="topojson",
344+
vectorfile_format="geojson",
345+
simplification=50,
345346
filter_by="FRANCE_ENTIERE",
346347
source="EXPRESS-COG-CARTO-TERRITOIRE",
347348
year=2022)
349+
france = france.loc[france['INSEE_REG']>10]
348350
```
349351

350352
1. S'amuser à représenter les limites de la France avec plusieurs projections:
@@ -365,17 +367,6 @@ pour chaque région.
365367
```
366368
:::
367369

368-
```{python}
369-
#| output: false
370-
france = download_vectorfile_url_all(
371-
values = "metropole",
372-
crs = 4326,
373-
borders = "REGION",
374-
vectorfile_format="topojson",
375-
filter_by="FRANCE_ENTIERE",
376-
source="EXPRESS-COG-CARTO-TERRITOIRE",
377-
year=2022)
378-
```
379370

380371
```{python}
381372
#| output: false
@@ -531,16 +522,19 @@ le fonds de carte des départements de la petite couronne:
531522
```{python}
532523
#| echo: true
533524
#| output: false
534-
idf = download_vectorfile_url_all(
535-
values = "11",
525+
idf = download_from_cartiflette(
526+
values = ["11"],
536527
crs = 4326,
537528
borders = "DEPARTEMENT",
538-
vectorfile_format="topojson",
529+
vectorfile_format="geojson",
539530
filter_by="REGION",
540531
source="EXPRESS-COG-CARTO-TERRITOIRE",
541532
year=2022)
542533
543-
petite_couronne_departements = idf.loc[idf['INSEE_DEP'].isin(["75","92","93","94"])].to_crs(2154)
534+
petite_couronne_departements = (idf
535+
.loc[idf['INSEE_DEP'].isin(["75","92","93","94"])]
536+
.to_crs(2154)
537+
)
544538
```
545539

546540
::: {.cell .markdown}

content/manipulation/03_geopandas_tutorial.qmd

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Dans ce tutoriel, nous allons utiliser les données suivantes :
3131

3232
* [Localisations des stations velib](https://opendata.paris.fr/explore/dataset/velib-emplacement-des-stations/download/?format=geojson&timezone=Europe/Berlin&lang=fr) ;
3333
* [fonds de carte `AdminExpress`](https://geoservices.ign.fr/adminexpress) à
34-
travers un package `Python` nommé [`cartiflette`](https://github.com/InseeFrLab/cartogether)
34+
travers un package `Python` nommé [`cartiflette`](https://github.com/InseeFrLab/cartiflette)
3535
facilitant la récupération de cette source.
3636

3737
La représentation des données, notamment la cartographie, est présentée plus
@@ -399,7 +399,7 @@ celles de l'IGN, et leur association à des jeux de données géographiques.
399399

400400
Le package `cartiflette` est expérimental
401401
et n'est disponible que sur
402-
[`Github`](https://github.com/InseeFrLab/cartogether), pas sur `PyPi`.
402+
[`Github`](https://github.com/InseeFrLab/cartiflette), pas sur `PyPi`.
403403
Il est amené à évoluer rapidement et cette page sera mise à jour
404404
quand de nouvelles fonctionalités (notamment l'utilisation d'`API`)
405405
seront disponibles pour encore simplifier la récupération de
@@ -412,7 +412,7 @@ vous pouvez retirer les `!` en début de ligne):
412412
```{python}
413413
#| eval: false
414414
!pip install requests py7zr geopandas openpyxl tqdm s3fs PyYAML xlrd
415-
!pip install git+https://github.com/inseefrlab/cartiflette@80b8a5a28371feb6df31d55bcc2617948a5f9b1a
415+
!pip install git+https://github.com/inseefrlab/cartiflette
416416
```
417417

418418
Ces commandes permettent de récupérer l'ensemble du code
@@ -442,13 +442,13 @@ Les contours de cet espace peuvent être récupérés de la manière suivante :
442442

443443
```{python}
444444
#| output: false
445-
import cartiflette.s3 as s3
445+
from cartiflette.public import download_from_cartiflette
446446
447-
shp_communes = s3.download_vectorfile_url_all(
447+
shp_communes = download_from_cartiflette(
448448
crs = 4326,
449449
values = ["75", "92", "93", "94"],
450450
borders="COMMUNE_ARRONDISSEMENT",
451-
vectorfile_format="topojson",
451+
vectorfile_format="geojson",
452452
filter_by="DEPARTEMENT",
453453
source="EXPRESS-COG-CARTO-TERRITOIRE",
454454
year=2022)
@@ -495,19 +495,18 @@ ax.set_axis_off()
495495

496496
Si on ne désire pas utiliser le niveau `COMMUNE_ARRONDISSEMENT`,
497497
il est nécessaire de mettre en oeuvre une construction du fond de
498-
carte en plusieurs phases.
498+
carte en plusieurs phases. C'est une opération un petit peu pénible, source d'erreur potentielle. Elle est illustrée ci-dessous mais il est donc recommandé de privilégier le niveau
499+
`COMMUNE_ARRONDISSEMENT` qui a été construit pour cela.
499500

500501
En premier lieu, il est nécessaire de récupérer le niveau des communes.
501502

502503
```{python}
503504
#| output: false
504-
import cartiflette.s3 as s3
505-
506-
shp_communes = s3.download_vectorfile_url_all(
505+
shp_communes = download_from_cartiflette(
507506
crs = 4326,
508507
values = ["75", "92", "93", "94"],
509508
borders="COMMUNE",
510-
vectorfile_format="topojson",
509+
vectorfile_format="geojson",
511510
filter_by="DEPARTEMENT",
512511
source="EXPRESS-COG-CARTO-TERRITOIRE",
513512
year=2022)
@@ -539,11 +538,11 @@ disponibles
539538
grâce à `cartiflette`:
540539

541540
```{python}
542-
arrondissements = s3.download_vectorfile_url_all(
541+
arrondissements = download_from_cartiflette(
543542
crs = 4326,
544543
values = ["75"],
545544
borders="COMMUNE_ARRONDISSEMENT",
546-
vectorfile_format="topojson",
545+
vectorfile_format="geojson",
547546
filter_by="DEPARTEMENT",
548547
source="EXPRESS-COG-CARTO-TERRITOIRE",
549548
year=2022)
@@ -784,14 +783,15 @@ contours des communes:
784783

785784
```{python}
786785
#| output: false
787-
dep = s3.download_vectorfile_url_all(
788-
values = "metropole",
786+
dep = download_from_cartiflette(
787+
values = ["France"],
789788
crs = 4326,
790789
borders = "DEPARTEMENT",
791-
vectorfile_format="topojson",
790+
vectorfile_format="geojson",
792791
filter_by="FRANCE_ENTIERE",
793792
source="EXPRESS-COG-CARTO-TERRITOIRE",
794793
year=2022)
794+
dep = dep.loc[dep["INSEE_DEP"].str.len() == 2]
795795
796796
dep["area"] = dep.to_crs(2154).area
797797
```
@@ -868,11 +868,11 @@ Haute-Garonne (31), après avoir téléchargé le fonds de carte adapté,
868868
fera
869869

870870
```{python}
871-
communes_31 = s3.download_vectorfile_url_all(
871+
communes_31 = download_from_cartiflette(
872+
values = ["31"],
872873
crs = 4326,
873-
values = "31",
874874
borders="COMMUNE",
875-
vectorfile_format="topojson",
875+
vectorfile_format="geojson",
876876
filter_by="DEPARTEMENT",
877877
source="EXPRESS-COG-CARTO-TERRITOIRE",
878878
year=2022)
@@ -939,15 +939,15 @@ communes = communes.set_crs(2154)
939939
Alors que la reprojection (projection Albers : `5070`) s'obtient de la manière suivante :
940940

941941
```{python}
942-
shp_region = s3.download_vectorfile_url_all(
943-
values = "metropole",
942+
shp_region = download_from_cartiflette(
943+
values = ["France"],
944944
crs = 4326,
945945
borders = "REGION",
946-
vectorfile_format="topojson",
946+
vectorfile_format="geojson",
947947
filter_by="FRANCE_ENTIERE",
948948
source="EXPRESS-COG-CARTO-TERRITOIRE",
949949
year=2022)
950-
950+
shp_region = shp_region.loc[shp_region['INSEE_REG']>10]
951951
fig,ax = plt.subplots(figsize=(10, 10))
952952
shp_region.to_crs(5070).plot(ax = ax)
953953
ax

content/visualisation/maps.qmd

Lines changed: 46 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,35 @@ la fonctionalité `str.contains` pour exclure les
133133
observations contenant _"Bike IN"_ ou _"Bike OUT"_
134134
dans la variable
135135
`nom_compteur`
136-
3. On va également utiliser les données d'arrondissements de la ville de Paris. Importer ces données depuis <https://opendata.paris.fr/explore/dataset/arrondissements/download/?format=geojson&timezone=Europe/Berlin&lang=fr>. Nommer cet objet `arrondissements`.
136+
3. On va également utiliser les contours d'arrondissements de la ville de Paris. Nommer cet objet `arrondissements`. Pour le créer, utiliser la fonction `download_from_cartiflette` du package [`cartiflette`](https://github.com/InseeFrLab/cartiflette).
137137
4. Utiliser la méthode `plot` pour représenter les localisations des compteurs dans l'espace. C'est, on peut l'avouer, peu informatif sans apport extérieur. Il va donc falloir travailler un peu l'esthétique
138138

139+
<details>
140+
141+
<summary>
142+
Aide pour l'utilisation de <code>cartiflette</code>
143+
</summary>
144+
145+
Le code suivant donne la structure générale, il suffit d'adapter
146+
l'argument `values`:
147+
148+
```python
149+
from cartiflette.public import download_from_cartiflette
150+
151+
#3. Chargement de "arrondissements"
152+
arrondissements = download_from_cartiflette(
153+
values = ["TO_BE_COMPLETED"],
154+
borders = "COMMUNE_ARRONDISSEMENT",
155+
filter_by = "DEPARTEMENT",
156+
crs = 4326,
157+
vectorfile_format="geojson",
158+
source="EXPRESS-COG-CARTO-TERRITOIRE",
159+
year=2022
160+
)
161+
```
162+
163+
</details>
164+
139165
```{=html}
140166
</div>
141167
```
@@ -176,8 +202,19 @@ compteurs = compteurs.loc[~compteurs["nom_compteur"].str.contains(r"(Bike IN|Bik
176202
#| include: false
177203
#| show: false
178204
205+
from cartiflette.public import download_from_cartiflette
206+
179207
#3. Chargement de "arrondissements"
180-
arrondissements = gpd.read_file("https://opendata.paris.fr/explore/dataset/arrondissements/download/?format=geojson&timezone=Europe/Berlin&lang=fr")
208+
arrondissements = download_from_cartiflette(
209+
values = ["75"],
210+
borders = "COMMUNE_ARRONDISSEMENT",
211+
filter_by = "DEPARTEMENT",
212+
crs = 4326,
213+
vectorfile_format="geojson",
214+
source="EXPRESS-COG-CARTO-TERRITOIRE",
215+
year=2022
216+
)
217+
181218
# arrondissements.head()
182219
```
183220

@@ -658,14 +695,8 @@ parisiens et communes dans les autres villes.
658695

659696
Nous allons privilégier une carte à ronds proportionnels (_bubble map_)
660697
aux cartes chorolèpthes qui trompent
661-
l'oeil. Les instructions d'installation du package `topojson`
662-
sont disponibles dans la partie manipulation
698+
l'oeil.
663699

664-
```{python}
665-
#| echo: false
666-
#| output: false
667-
!pip install topojson
668-
```
669700

670701
::: {.cell .markdown}
671702
```{=html}
@@ -674,8 +705,8 @@ sont disponibles dans la partie manipulation
674705
```
675706

676707
1. Récupérer le fond de carte des départements 75, 92, 93 et 94
677-
avec `cartiflette`. Pour cela, utiliser `download_vectorfile_url_all`
678-
depuis `cartiflette.s3` en fixant l'option `level` à `COMMUNE_ARRONDISSEMENT`.
708+
avec `cartiflette`. Pour cela, utiliser `download_from_cartiflette`
709+
depuis `cartiflette.public` en fixant l'option `borders` à `COMMUNE_ARRONDISSEMENT`.
679710
Nommer cet objet `df`.
680711
2. Afin que les calculs ultérieurs de surface ne soient pas faussés,
681712
assurez-vous que les données sont en Lambert 93 en reprojetant
@@ -702,14 +733,14 @@ Vous pouvez utiliser la variable créée à la question 5 pour les couleurs.
702733
#| output: false
703734
import pandas as pd
704735
import matplotlib.pyplot as plt
705-
import cartiflette.s3 as s3
736+
from cartiflette.public import download_from_cartiflette
706737
707738
# 1/ Fonds communaux
708-
df = s3.download_vectorfile_url_all(
709-
crs = 4326,
739+
df = download_from_cartiflette(
710740
values = ["75", "92", "93", "94"],
741+
crs = 4326,
711742
borders="COMMUNE_ARRONDISSEMENT",
712-
vectorfile_format="topojson",
743+
vectorfile_format="geojson",
713744
filter_by="DEPARTEMENT",
714745
source="EXPRESS-COG-CARTO-TERRITOIRE",
715746
year=2022)

docker/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ RUN apt-get -y update && \
66
apt-get -y install wget && \
77
apt-get install -y git && \
88
apt-get install build-essential -y && \
9+
apt-get install libmagic-dev -y && \
910
rm -rf /var/lib/apt/lists/*
1011

1112
RUN apt-get -y update && \

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
pynsee
22
xlrd
33
contextily
4-
cartiflette @ git+https://github.com/inseefrlab/cartiflette@80b8a5a28371feb6df31d55bcc2617948a5f9b1a
4+
cartiflette @ git+https://github.com/inseefrlab/cartiflette
55
graphviz
66
plotnine
77
geoplot

0 commit comments

Comments
 (0)