Skip to content
Etienne edited this page Jan 11, 2025 · 2 revisions

Préambule sur la manipulation de données dans python

Dans le cadre de ce projet, nous allons être amenés à utiliser des données spatiales souvent standardisées dans des logiciels comme QGIS. Cela inclut également des données géométriques (points, lignes, polygones) que nous pouvons extraire d'une base de données créée à partir du cadastre dans QGIS.

Création des bases de données

Pour l'instant, la création de cette base de données se fait à la main dans QGIS mais pourra être automatisée par la suite grâce à l'utilisation de ogr2ogr de gdal comme c'est le cas dans l'extension QGIS "Cadastre".

Paquets python pour la manipulation de données

Heureusement, il existe plusieurs paquets permettant notamment de lire des données géométriques, notamment shapely. Son utilisation est d'autant plus avantageuse pour nous car elle contient des classes, qui, à partir de données géométriques, ex : MULTIPOLYGON, renvoie une classe contenant des attributs comme l'aire, le centroïde, etc...

Ce paquet permet également de savoir si un polygone est contenu dans un autre, de déterminer le plus petit encadrant d'un polygone...

Shapely fonctionne dans des plans de coordonnées cartésiennes et le cadastre utilisant le système de coordonnées Lambert 93, il est utile de convertir les coordonnées Lambert 93 en coordonnées WGS84 (latitude, longitude) pour pouvoir afficher des résultats sur une carte.

Le paquet pyproj permet de convertir des coordonnées d'un système à l'autre mais nous utiliserons plutôt le paquet lambert pour l'instant qui est plus simple d'utilisation.

Exemple d'utilisation

Exemple d'utilisation de shapely

>>> from shapely.geometry import Polygon
>>> poly = Polygon([(0, 0), (1, 1), (1, 0)])
>>> poly.area
0.5
>>> poly.length
3.41
>>> poly.centroid
<POINT (0.667 0.333)> 
>>> poly.centroid.x
0.6666666666666666
>>> poly.centroid.y
0.3333333333333333

Exemple d'utilisation de Lambert

>>> from lambert import Lambert93, convertToWGS84Deg
>>> pt = convertToWGS84Deg(652000, 6863000, Lambert93) # Attention à bien mettre les coordonnées dans le bon ordre
>>> pt 
<lambert.LambertPoint object at 0x...>
>>> pt.getX() #Longitude
2.346
>>> pt.getY() #Latitude
48.865

Clone this wiki locally