-
Notifications
You must be signed in to change notification settings - Fork 0
Data
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.
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".
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.
>>> 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>>> 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