Lecture de Shapefiles

Le module PyShp permet de lire des fichiers .shp ainsi que les différentes informations contenus dans les fichiers associés. Cette page expose quelques commandes de base pour lire et utiliser l'ensemble des données.

Lecture

La commande .Reader permet de lire l'entièreté du fichier shapefile c'est à dire aussi bien la géométrie que les données attributaires.


import pyShp
file = pyShp.Reader("nom_du_fichier.shp")
						

Récupérer la géométrie

La géométrie est accessible via :


file.shapes()
						

Selon que les entités sont des points, des lignes ou des polygones, les informations contenues ne seront pas les mêmes.

Récupérer le type de géométrie

Le type de géométrie est accessible via :


file.geom_type
						

Récupérer les informations attributaires

Les attributs de chacune des entités et les noms des différents champs sont accessibles via :


file.fields() # Tuple contenant les intitulés des champs.
file.record(i) # Attribut de la forme i, i un entier.
						

Exemples commentés

Exemple 1 : récupéreration des coordonnées des points constituant un fichier de type lignes (par exemple un réseau routier) ou polygones. L'algorythme ci-dessous permet de récupérer les points unique (pas de doublons).


import shapefile 						#Importation du package.
file = pyShp.reader("reseau.shp") 	#Lecture des fichiers.
nodes=[]								#Stockage des points du réseau (appelés noeuds) sous la forme d'une liste.
for shp in file.shapes():				#Parcours des différentes lignes au sein du fichier .
	for pts in shp.points :				#Parcours des points constituant la ligne ou le polygone en cours d'exploration.
		if pts not in nodes : 			#Si le point n'est pas déjà dans la liste des points.
			nodes.append(pts)			#Il est ajouté à notre liste sous sa forme initiale (un tuple contenant ses coordonnées x et y).