Manipuler des fichiers GeoJson avec jq
Les fichiers GeoJSON que l’on
peut télécharger sur le Web (ex :
France-GeoJSON)
contiennent souvent de fois plus de données que celles recherchées.
Il est possible d’extraire les données en éditant le fichier pour en extraire la partie utile, mais ce n’est pas très facile !
Pour faciliter l’opération, on peut utiliser l’outil jq.
Installation
Pour installer jq sous Debian il faut utiliser les commandes :
apt update
apt install jq
Utilisation de jq
L’aide est accessible avec la commande man jq
.
Pour visualiser le contenu d’une fichier GeoJSON :
cat fichier.geojson | jq .
Ce qui donne :
2034 $ cat region-bretagne.geojson | jq . | more
{
"type": "Feature",
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
-3.47716,
48.88127
],
[
-3.47863,
48.88218
],
[
-3.48089,
48.88234
],
[
-3.48448,
48.88139
],
--Plus--
Si on regarde le contenu du fichier GeoJSON on voit que chaque
enregistrement contient un chapitre properties
contenant plusieurs
informations.
Dernières lignes de la commande cat communes-bretagne.geojson | jq .
:
[
-1.70864,
48.02358
]
]
]
},
"properties": {
"code": "35363",
"nom": "Pont-Péan"
}
}
]
}
Il est possible de lister que le champ nom
du fichier GeoJSON :
2047 $ cat cantons-bretagne.geojson | jq ".features[].properties.nom" | more
"Bégard"
"Broons"
"Callac"
"Dinan"
"Guingamp"
"Lamballe"
"Lannion"
"Lanvallay"
"Loudéac"
"Mûr-de-Bretagne"
"Paimpol"
"Perros-Guirec"
"Plaintel"
"Plancoët"
"Plélo"
"Plénée-Jugon"
"Pléneuf-Val-André"
"Plérin"
"Pleslin-Trigavou"
"Plestin-les-Grèves"
"Ploufragan"
"Plouha"
"Rostrenen"
--Plus--
Il est possible d’extraire les données géographique pour un seul élément avec la commande :
2056 $ cat cantons-bretagne.geojson | jq '.features = [.features[] |select(.properties.nom | test("Plestin-les-Grèves"))]'
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-3.6594,
48.6592
],
[
-3.6373,
48.6731
],
[
-3.6369,
48.6817
],
[
-3.6158,
48.6828
],
[
-3.6098,
48.6699
],
[
-3.5955,
48.6691
],
[
-3.5738,
48.6754
],
[
-3.5689,
48.6864
],
[
-3.5798,
48.6968
],
[
-3.5844,
48.7167
],
[
-3.5582,
48.7293
],
[
-3.536,
48.728
],
[
-3.5233,
48.7244
],
[
-3.5058,
48.7002
],
[
-3.461,
48.7136
],
[
-3.455,
48.7258
],
[
-3.4236,
48.7152
],
[
-3.4173,
48.7045
],
[
-3.4263,
48.6977
],
[
-3.4129,
48.679
],
[
-3.4267,
48.6616
],
[
-3.4234,
48.6405
],
[
-3.4017,
48.6274
],
[
-3.3804,
48.6191
],
[
-3.3761,
48.6123
],
[
-3.3819,
48.5868
],
[
-3.3966,
48.561
],
[
-3.3992,
48.5455
],
[
-3.3926,
48.5365
],
[
-3.4002,
48.5201
],
[
-3.417,
48.5197
],
[
-3.4278,
48.5018
],
[
-3.4497,
48.4879
],
[
-3.4757,
48.4893
],
[
-3.5093,
48.4761
],
[
-3.5351,
48.4731
],
[
-3.5477,
48.4759
],
[
-3.5613,
48.4648
],
[
-3.5787,
48.4629
],
[
-3.6,
48.4707
],
[
-3.604,
48.4966
],
[
-3.5842,
48.5044
],
[
-3.5753,
48.5139
],
[
-3.5418,
48.5383
],
[
-3.5531,
48.5408
],
[
-3.5702,
48.5545
],
[
-3.5933,
48.5545
],
[
-3.584,
48.5743
],
[
-3.5888,
48.5826
],
[
-3.6109,
48.5888
],
[
-3.6244,
48.588
],
[
-3.6416,
48.597
],
[
-3.6495,
48.6104
],
[
-3.6659,
48.6523
],
[
-3.6594,
48.6592
]
]
]
},
"properties": {
"code": "22020",
"nom": "Plestin-les-Grèves"
}
}
]
}
En redirigeant le résultat de la commande précédente dans un fichier, on peut afficher le contour du canton :
Pour les limites des communautés de communes, ou EPCI, je n’ai trouvé que le fichier concernant la Bretagne sur data.bretagne.bzh
Les limites de la communauté de communes de Lannion Trégor Communauté :