Cartographie Numerique

De Google Maps a OpenStreetMap, les cartes numeriques sont partout. Mais comment transforme-t-on une sphere (la Terre) en carte plate ? Decouvrez les principes de la cartographie numerique, les projections, et les outils pour creer vos propres cartes interactives !

Difficulte:
35 min
+35 XP

Objectifs du cours

  • Comprendre les principes de la cartographie numerique
  • Decouvrir les SIG (Systemes d'Information Geographique)
  • Maitriser les formats de donnees geographiques (GeoJSON, Shapefile)
  • Connaitre les projections cartographiques (Mercator, Lambert)
  • Utiliser les APIs de cartographie (Leaflet, Google Maps)

Erreurs courantes a eviter

  • Confondre donnees raster (images) et vecteur (formes)
  • Ignorer la projection lors de calculs de distance
  • Penser que les cartes plates representent fidelement la Terre
  • Melanger latitude/longitude avec les systemes de projection

**Deux types de donnees geographiques**

En cartographie numerique, on distingue deux types fondamentaux de donnees :

**DONNEES RASTER (Images)**

- Grille de pixels (comme une photo) - Chaque pixel a une valeur (couleur, altitude...) - Exemples : photos satellite, images aeriennes, cartes scannees - Formats : TIFF, PNG, JPEG, GeoTIFF

**Avantages** : - Representation continue (terrain, temperature) - Facile a capturer (photos, scanners) - Ideal pour l'imagerie satellite

**Inconvenients** : - Taille de fichier importante - Perte de qualite au zoom - Difficile a modifier

**DONNEES VECTEUR (Formes)**

- Points, lignes, polygones definis mathematiquement - Chaque objet a des attributs (nom, population...) - Exemples : routes, frontieres, batiments - Formats : GeoJSON, Shapefile, KML

**Avantages** : - Legers (coordonnees au lieu de pixels) - Zoom infini sans perte de qualite - Facile a interroger et modifier - Calculs precis (surfaces, distances)

**Inconvenients** : - Moins adapte aux donnees continues - Necessite numerisation

**Comparaison** :

| Aspect | Raster | Vecteur | |--------|--------|---------| | Structure | Grille de pixels | Points, lignes, polygones | | Zoom | Pixelisation | Toujours net | | Taille fichier | Grande | Petite | | Usage | Images, terrain | Routes, frontieres | | Analyse | Calcul de pente | Calcul de distance |

Python
# Donnees raster vs vecteur
import json

print("=== DONNEES RASTER vs VECTEUR ===\n")

# Exemple de donnees raster (simplifiees)
print("DONNEES RASTER (Image satellite simplifiee) :\n")

raster = [
    [0, 0, 1, 1, 2],
    [0, 1, 1, 2, 2],
    [1, 1, 2, 2, 2],
    [1, 2, 2, 3, 3],
    [2, 2, 3, 3, 3]
]

legende = {0: "Eau   ", 1: "Foret ", 2: "Champs", 3: "Ville "}

for ligne in raster:
    for pixel in ligne:
        print(legende[pixel], end=" ")
    print()

print("\nChaque cellule contient une valeur (type de terrain).")
print(f"Taille : {len(raster)} x {len(raster[0])} = {len(raster) * len(raster[0])} pixels")

# Exemple de donnees vecteur
print("\n\nDONNEES VECTEUR (GeoJSON simplifie) :\n")

geojson = {
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [2.2945, 48.8584]
            },
            "properties": {
                "nom": "Tour Eiffel",
                "type": "monument",
                "hauteur": 330
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "LineString",
                "coordinates": [
                    [2.35, 48.85],
                    [2.36, 48.86],
                    [2.37, 48.87]
                ]
            },
            "properties": {
                "nom": "Rue de Rivoli",
                "type": "route"
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Polygon",
                "coordinates": [[
                    [2.33, 48.86],
                    [2.34, 48.86],
                    [2.34, 48.87],
                    [2.33, 48.87],
                    [2.33, 48.86]
                ]]
            },
            "properties": {
                "nom": "Jardin des Tuileries",
                "type": "parc",
                "superficie_ha": 25.5
            }
        }
    ]
}

print(json.dumps(geojson, indent=2)[:800] + "...")

print("\n\nTypes de geometries vecteur :")
print("  - Point     : coordonnees (lon, lat)")
print("  - LineString: liste de points connectes")
print("  - Polygon   : liste de points formant une surface fermee")

# Comparaison taille
print("\n\n=== COMPARAISON TAILLE DE FICHIER ===\n")

comparaison = [
    ("Photo satellite Paris", "Raster", "50 Mo", "1 image"),
    ("Reseau routier Paris", "Vecteur", "5 Mo", "50 000 routes"),
    ("Carte topographique", "Raster", "200 Mo", "Scan papier"),
    ("Frontieres du monde", "Vecteur", "2 Mo", "250 pays")
]

print(f"{'Description':<25} {'Type':<10} {'Taille':<10} {'Contenu':<20}")
print("-" * 65)
for desc, type_d, taille, contenu in comparaison:
    print(f"{desc:<25} {type_d:<10} {taille:<10} {contenu:<20}")

Quiz de validation

1. Quelle est la difference entre donnees raster et vecteur ?

2. Quelle projection est utilisee par Google Maps ?

3. Quel est le principal defaut de la projection Mercator ?

4. Qu'est-ce qu'OpenStreetMap ?

5. Quelle bibliotheque JavaScript permet de creer des cartes interactives ?

Pixel