Skip to content

GeoJSON

Etienne edited this page Nov 27, 2024 · 2 revisions

JavaScript Object Notation (JSON)

Le format JavaScript Object Notation (JSON) est un format de données comme le xml ou le yaml. Sa syntaxe s'inspire des notations d'objets javascript (d'où le nom) sous le format suivant : json{"clé":valeur}. Un exemple d'utilisation est par exemple :

{
  "filière" : {
    "nom":"IATI SIA",
    "Promo": 2025
  }
}

Où ici, filière est une clé dont la valeur est l'object {"nom":"IATI SIA","Promo": 2025}.

Cela permet l'échange d'informations sous un format structuré, facilement utilisable dans des langages de programmations (plusieurs le supportent d'ailleurs nativement). Les payloads (données embarquées) dans les requêtes HTTP utilise ce format.

JSON et Python

Comparaison des types

Commencons par un petit tableau :

JSON Python
object dict
array list
string str
number int
number float
true True
false False
null None

Source du tableau

Utilisation du JSON en Python

Pour charger un fichier json depuis son disque vers une structure python, on peut donc utiliser un code similaire à celui-ci:

import json

with open('data.json', 'r') as file:
    data = json.load(file)

Ici, nous ouvrons un fichier "data.json" en mode lecture et nous chargeons le contenu du fichier dans un objet python en effectuant les conversions du tableau au dessus. Ainsi, l'exemple de filière vu plus tôt nous donneras par exemple suivant :

>> print(data)
{'filière': {'nom': 'IATI SIA', 'Promo': 2025}}

>> print(data["filière"])
{'nom': 'IATI SIA', 'Promo': 2025}

>> print(data["filière"]["nom"])
'IATI SIA'

GeoJSON

Le GeoJSON est un format de notation qui permet de décrire des données géographiques en utilisant le format de notation JSON. C'est un format ouvert mais dont la norme dévie d'autres dans la présentation des données. En particulier, le GeoJSON représente les coordonnées sous le format [longitude,latitude], la plupart des autres formats utilise la notation inverse.

Exemple type d'un GeoJSON

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "MultiPolygon",
        "coordinates": [
          [
            [
              [1.5134898, 43.582456],
              [1.5134985, 43.5824291],
              [1.5135032, 43.5824152],
              [1.5135476, 43.5824229],
              [1.5135369, 43.5824642],
              [1.5134898, 43.582456]
            ]
          ]
        ]
      },
      "properties": {
        "type": "02",
        "nom": null,
        "commune": "31445",
        "created": "2021-01-04",
        "updated": "2021-01-05"
      }
    },
    {
      "type": "Feature",
      "geometry": {
        "type": "MultiPolygon",
        "coordinates": [
          [
            [
              [1.5126594, 43.5821189],
              [1.5126686, 43.5820769],
              [1.5127246, 43.5820832],
              [1.5127156, 43.5821253],
              [1.5126594, 43.5821189]
            ]
          ]
        ]
      },
      "properties": {
        "type": "02",
        "nom": null,
        "commune": "31445",
        "created": "2021-01-04",
        "updated": "2021-01-05"
      }
    }
  ]
}

Plusieurs informations sont utiles, celles qui nous intéressent le plus pour trouver les dates de création des bâtiments est notamment les clés created et updated dans le dictionnaire properties. Ici, features est un array, la traduction en Python est donc une liste de dictionnaires. Typiquement pour itérer dans les dates de création des bâtiments, on peut utiliser le code suivant :

import json

with open('data.geojson', 'r') as file:
    data = json.load(file)

for feature in data["features"]:
    print(feature["properties"]["created"])

Le résultat que nous obtenons est donc les deux dates de création des bâtiments dans le GeoJSON.

# Pour une feature donnée dans la liste des features
>> print(feature["properties"]["created"])
"2021-01-04"

Clone this wiki locally