Empreinte de peuplement mondial – Évolution
Produits utilisés : wsf_evolution
Mots-clés : données utilisées ; Empreinte de peuplement mondial,:index:données utilisées ; Empreinte de peuplement mondial - Évolution, ensembles de données ; wsf_evolution
Aperçu
Selon le Département des affaires économiques et sociales de l’ONU, la planète comptera 9,7 milliards d’habitants d’ici 2050. 55 % de la population mondiale réside actuellement dans des zones urbaines et ce chiffre devrait atteindre 68 % d’ici 2050. L’urbanisation rapide et anarchique, associée aux problèmes posés par le changement climatique, peut accroître la pollution de l’air, rendre les populations plus vulnérables aux catastrophes et entraîner des problèmes de gestion des ressources telles que l’eau, les matières premières et l’énergie (Mapping Our Human Footprint From Space, 2023).
Afin d’améliorer la compréhension des tendances actuelles de l’urbanisation mondiale, l’ESA et le Centre aérospatial allemand (DLR), en collaboration avec l’équipe de Google Earth Engine, développent conjointement l’empreinte mondiale des établissements humains – l’ensemble de données le plus complet au monde sur les établissements humains.
L”Évolution de l’empreinte mondiale des établissements humains a été produite en traitant sept millions d’images du satellite américain Landsat collectées entre 1985 et 2015 et montre la croissance annuelle des établissements humains à l’échelle mondiale (Mapping Our Human Footprint From Space, 2023). Il convient de noter que la disponibilité passée de Landsat-5/7 varie considérablement à travers le monde et au fil du temps. Indépendamment de l’approche mise en œuvre, cela peut alors entraîner une qualité inférieure du produit final lorsque peu ou pas de scènes ont été collectées. Pour fournir aux utilisateurs une mesure appropriée et intuitive qui tient compte de la disponibilité des images Landsat, le score de cohérence des données d’entrée (IDC) a été mis en œuvre. Il va de 6 à 1 avec : 6) très bon ; 5) bon ; 4) moyen ; 3) modéré ; 2) faible ; 1) très faible. Le score IDC permet une interprétation correcte du produit d’évolution du WSF (Marconcini et al., 2021).
Les données d’évolution de l’Empreinte Mondiale des Établissements sont désormais indexées dans la plateforme DE Africa.
Description
Ce bloc-notes est une procédure pas à pas sur la façon d’utiliser les données d’évolution de l’empreinte des colonies mondiales dans le cube de données. L’exemple pratique guide les utilisateurs à travers le code requis pour :
Inspection des données WSF Evolution dans le datacube
Utilisez la fonction « dc.load() » pour charger les données WSF
Tracé des résultats pour les données WSF Evolution
Commencer
Pour exécuter cette analyse, exécutez toutes les cellules du bloc-notes, en commençant par la cellule « Charger les packages ».
Charger des paquets
[1]:
%matplotlib inline
import datacube
import numpy as np
import pandas as pd
import geopandas as gpd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
from matplotlib.colors import ListedColormap
from matplotlib.patches import Patch
import matplotlib.animation as animation
from mpl_toolkits.axes_grid1 import make_axes_locatable
from IPython.display import Image
from odc.geo.geom import Geometry
from deafrica_tools.plotting import display_map
from deafrica_tools.areaofinterest import define_area
Se connecter au datacube
[2]:
dc = datacube.Datacube(app="wsf")
Liste des mesures
Nous pouvons inspecter les données disponibles pour le WSF en utilisant la fonctionnalité « list_measurements » de datacube. Le tableau ci-dessous répertorie les produits et mesures disponibles pour les trois jeux de données WSF indexés dans le datacube de DE Africa.
[3]:
product_name = ['wsf_evolution']
dc_measurements = dc.list_measurements()
dc_measurements.loc[product_name].drop('flags_definition', axis=1)
[3]:
name | dtype | units | nodata | aliases | scale_factor | ||
---|---|---|---|---|---|---|---|
product | measurement | ||||||
wsf_evolution | wsfevolution | wsfevolution | int32 | 1 | 0.0 | [wsfevolution] | NaN |
idc_score | idc_score | uint8 | 1 | 0.0 | [idc, idcscore, idcs] | NaN |
Paramètres d’analyse
Pour définir la zone d’intérêt, deux méthodes sont disponibles :
En spécifiant la latitude, la longitude et la zone tampon. Cette méthode nécessite que vous saisissiez la latitude centrale, la longitude centrale et la valeur de la zone tampon en degrés carrés autour du point central que vous souhaitez analyser. Par exemple, « lat = 10,338 », « lon = -1,055 » et « buffer = 0,1 » sélectionneront une zone avec un rayon de 0,1 degré carré autour du point avec les coordonnées (10,338, -1,055).
By uploading a polygon as a
GeoJSON or Esri Shapefile
. If you choose this option, you will need to upload the geojson or ESRI shapefile into the Sandbox using Upload Files buttonin the top left corner of the Jupyter Notebook interface. ESRI shapefiles must be uploaded with all the related files
(.cpg, .dbf, .shp, .shx)
. Once uploaded, you can use the shapefile or geojson to define the area of interest. Remember to update the code to call the file you have uploaded.
Pour utiliser l’une de ces méthodes, vous pouvez décommenter la ligne de code concernée et commenter l’autre. Pour commenter une ligne, ajoutez le symbole "#"
avant le code que vous souhaitez commenter. Par défaut, la première option qui définit l’emplacement à l’aide de la latitude, de la longitude et du tampon est utilisée.
L’emplacement par défaut est Mansoura, en Égypte.
[4]:
# Method 1: Specify the latitude, longitude, and buffer
aoi = define_area(lat= 31.0412, lon=31.3845, buffer=0.2)
# Method 2: Use a polygon as a GeoJSON or Esri Shapefile.
#aoi = define_area(vector_path='aoi.shp')
#Create a geopolygon and geodataframe of the area of interest
geopolygon = Geometry(aoi["features"][0]["geometry"], crs="epsg:4326")
geopolygon_gdf = gpd.GeoDataFrame(geometry=[geopolygon], crs=geopolygon.crs)
# Get the latitude and longitude range of the geopolygon
lat_range = (geopolygon_gdf.total_bounds[1], geopolygon_gdf.total_bounds[3])
lon_range = (geopolygon_gdf.total_bounds[0], geopolygon_gdf.total_bounds[2])
Afficher l’emplacement sélectionné
La cellule suivante affichera la zone sélectionnée sur une carte interactive. N’hésitez pas à zoomer et dézoomer pour mieux comprendre la zone que vous allez analyser. En cliquant sur n’importe quel point de la carte, vous découvrirez les coordonnées de latitude et de longitude de ce point.
[5]:
display_map(x=lon_range, y=lat_range)
[5]:
Chargement du jeu de données WSF Evolution
L’ensemble de données WSF Evolution sera chargé à l’aide de la fonction « dc.load ». Pour plus d’informations sur la manière de charger des données à l’aide du datacube, reportez-vous au bloc-notes « Introduction au chargement des données <../Beginners_guide/03_Loading_data.ipynb> »__.
La cellule ci-dessous charge le jeu de données WSF Evolution. Notez les valeurs « produit » et « mesures ». Celles-ci seront mises à jour pour les données suivantes lors de leur chargement.
[6]:
#create reusable datacube query object
query = {
'x': lon_range,
'y': lat_range,
'resolution':(-30, 30),
'output_crs': 'epsg:6933',
}
#loading the data using dc.load
wsf_evolution = dc.load(product='wsf_evolution',
measurements=['wsfevolution', 'idc_score'],
**query).squeeze()
display(wsf_evolution)
<xarray.Dataset> Size: 9MB Dimensions: (y: 1463, x: 1288) Coordinates: time datetime64[ns] 8B 2000-07-01T23:59:59.999500 * y (y) float64 12kB 3.796e+06 3.795e+06 ... 3.752e+06 3.752e+06 * x (x) float64 10kB 3.009e+06 3.009e+06 ... 3.047e+06 3.047e+06 spatial_ref int32 4B 6933 Data variables: wsfevolution (y, x) int32 8MB 0 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0 idc_score (y, x) uint8 2MB 6 6 6 6 6 6 6 6 6 6 6 ... 6 6 6 6 6 6 6 6 6 6 Attributes: crs: epsg:6933 grid_mapping: spatial_ref
Représentation spatiale des données d’évolution du FSM
Les tracés spatiaux permettent de visualiser les zones où il y a eu développement d’implantations. Identifier l’évolution de la zone de 1985 à 2015.
Le score IDC permet une interprétation correcte du produit WSF Evolution. Score de cohérence des données d’entrée (IDC), qui varie de 6 à 1 avec : 6 - très bon ; 5 - bon ; 4 - moyen ; 3 - modéré ; 2 - faible ; 1 - très faible.
[7]:
fig, ax = plt.subplots(1, 2, figsize=(10, 6), sharey=True)
#in plotting of te data zero(no-data) is marked out
wsf_plt = wsf_evolution.where(wsf_evolution != 0
).wsfevolution.plot(cmap=ListedColormap(
sns.color_palette('rocket_r').as_hex()), ax=ax[0], add_colorbar= False)
ax[0].set_title('WSF Evolution from 1985 to 2015')
divider = make_axes_locatable(ax[0])
cax = divider.new_vertical(size='2%', pad=0.6, pack_start = True)
fig.add_axes(cax)
fig.colorbar(wsf_plt, cax = cax, orientation = 'horizontal', label='Year')
#in plotting of the IDC score to support interpretation of the data
wsf_plt = wsf_evolution.where(wsf_evolution != 0
).idc_score.plot(cmap=ListedColormap(
sns.color_palette('hls', 6).as_hex()), ax=ax[1], add_colorbar= False, vmin=1, vmax=6)
ax[1].set_title('IDC score')
divider = make_axes_locatable(ax[1])
cax = divider.new_vertical(size='2%', pad=0.6, pack_start = True)
fig.add_axes(cax)
fig.colorbar(wsf_plt, cax = cax, orientation = 'horizontal', label='IDC score')
plt.show()

À partir du tracé spatial ci-dessus, l’image de gauche montre l’évolution de 1985 à 2015, tandis que l’image de droite indique le score IDC pour la zone d’étude. En regardant le score IDC de 6 pour la zone d’étude, les valeurs obtenues à partir des données WSF Evolution peuvent être classées comme très bonnes, et on peut s’y fier pour une analyse plus approfondie.
Calculer la surface de l’empreinte de peuplement
Le nombre de pixels peut être utilisé pour la surface du bâtiment si la surface en pixels est connue. Exécutez la cellule suivante pour générer les constantes nécessaires à la réalisation de cette conversion.
[8]:
pixel_length = query["resolution"][1] # in metres
m_per_km = 1000 # conversion from metres to kilometres
area_per_pixel = pixel_length**2 / m_per_km**2
Représentation graphique des données d’évolution du FSM
Chaque pixel représente la valeur de l’année de l’ensemble de données d’évolution du WSF ; pour obtenir la surface de l’évolution, le pixel de l’année doit être compté et enregistré dans un dataframe Pandas pour permettre le calcul de la surface. La somme cumulée de la surface sera calculée en fonction de son augmentation au cours de la période.
Il existe une différence entre la superficie calculée pour 2015 à partir du produit WSF 2015 et celle du produit Evolution. Cela peut être dû au fait que le produit Evolution est dérivé de Landsat-5 et Landsat-7, tandis que WSF 2015 et 2019 sont dérivés de Sentinel-1 et Landsat-8.
[9]:
evolution_period = {}
#running a for loop to extract year and calculate the area based on the year
for evolution_year in np.unique(wsf_evolution.wsfevolution.values):
if evolution_year != 0:
evolution_area = wsf_evolution.where(
wsf_evolution.wsfevolution ==evolution_year).wsfevolution.count() * area_per_pixel
evolution_period[evolution_year] = evolution_area
#convert dict to dataframe
evolution_data = pd.DataFrame.from_dict(evolution_period, orient='index', dtype=float)
#Cummulative sum of the data
evolution_data['evolve'] = evolution_data[0].cumsum()
fig, ax = plt.subplots(figsize=(12,6))
evolution_data.evolve.plot(ax=ax, color='#B5784A')
ax.set_ylabel("Area (Sq. km)")
ax.set_title(f"World Settlement Footprint \n Evolution from 1985 to 2015 for the Study Area")
ax.grid(linewidth=0.3)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
plt.show()

Il convient de noter que la disponibilité des satellites Landsat-5/7 varie considérablement à travers le monde et au fil du temps. Indépendamment de l’approche mise en œuvre, cela peut alors entraîner une qualité inférieure du produit final où peu ou pas de scènes ont été collectées. Le score IDC permet une interprétation correcte du produit d’évolution du WSF.
Animation des données d’évolution du FSM de 1985 à 2015
La cellule ci-dessous trace l’ensemble de données et montre l’animation de la façon dont l’empreinte du bâtiment a évolué au fil des ans de 1985 à 2015.
[10]:
evolution_year = evolution_data.index.values
fig, ax = plt.subplots()
#Generating the color scheme based on the number of years
lenyear=len(evolution_year)
palette = list(reversed(sns.color_palette("rocket", lenyear).as_hex()))
wsf = []
color_index = 0
for i in range(1, len(evolution_year) + 1):
evo_list= (evolution_year[:i])
color = palette[:color_index]
wsf_plt = wsf_evolution.where(
wsf_evolution.isin(evo_list)).wsfevolution.plot(cmap=ListedColormap(color),
add_colorbar= False, ax=ax)
color_index += 1
t = ax.annotate(evolution_year[i-1], (1,1), xycoords='axes pixels', size='x-large',
weight='bold')
wsf.append([wsf_plt, t])
ax.set_title(f'World Settlement Footprint \n Evolution from 1985 to 2015 for the Study Area')
divider = make_axes_locatable(ax)
cax = divider.new_vertical(size='2%', pad=0.6, pack_start = True)
fig.add_axes(cax)
fig.colorbar(wsf_plt, cax = cax, orientation = 'horizontal')
ani = animation.ArtistAnimation(fig=fig, artists=wsf, interval=500, blit=True)
ani.save('wsf.gif')
plt.close()
Image(filename='wsf.gif')
[10]:
<IPython.core.display.Image object>
Conclusion
L’Empreinte Mondiale des Établissements offre une base de connaissances qui peut aider les chercheurs, les organisations gouvernementales et d’autres parties prenantes, telles que les urbanistes, à mieux comprendre comment l’urbanisation se produit et, simultanément, à mettre en place des stratégies de développement urbain durable pour des décisions politiques éclairées aux niveaux local et national.
Note
Pour exécuter une zone différente, accédez à la cellule Paramètres d’analyse, modifiez les valeurs lat et lon dans define_area_function.
Référencement
Cartographie de notre empreinte humaine depuis l’espace (consulté en août 2023). ESA - Cartographie de notre empreinte humaine depuis l’espace. https://www.esa.int/Applications/Observing_the_Earth/Mapping_our_human_footprint_from_space
Mattia Marconcini, Annekatrin Metz-Marconcini, Thomas Esch et Noel Gorelick. Comprendre les tendances actuelles de l’urbanisation mondiale - The World Settlement Footprint Suite. GI_Forum 2021, numéro 1, 33-38 (2021) https://austriaca.at/0xc1aa5576%200x003c9b4c.pdf
Informations Complémentaires
Licence : Le code de ce carnet est sous licence Apache, version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>. Les données de Digital Earth Africa sont sous licence Creative Commons par attribution 4.0 <https://creativecommons.org/licenses/by/4.0/>.
Contact : Si vous avez besoin d’aide, veuillez poster une question sur le canal Slack Open Data Cube <http://slack.opendatacube.org/>`__ ou sur le GIS Stack Exchange en utilisant la balise open-data-cube
(vous pouvez consulter les questions posées précédemment ici). Si vous souhaitez signaler un problème avec ce bloc-notes, vous pouvez en déposer un sur Github.
Version de Datacube compatible :
[11]:
print(datacube.__version__)
1.8.20
Dernier test :
[12]:
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
[12]:
'2025-01-14'