Jeu de données : Mon Réseau Mobile
Titre : Traitement des cartes en Python
Date : 2020-10-15 13:22

Bonjour, 

(Contexte) 
J'étudie actuellement la couverture du réseau mobile (2G, 3G, 4G) de chaque opérateur. 
J'aimerais connaître la couverture mobile de chaque opérateur à un point (x, y) correspondant à l'adresse de mon client. Comme sur " https: //" www.monreseaumobile.fr/ ". 
Seulement, j'aimerais faire cela pour une étude portée sur les clients d'un opérateur. Et pouvoir traiter ces informations ensuite. 

(Demande) 
J'aimerais savoir comment extraire la géométrie d'un shapefile, avec Python: v.3.9 
Pour le moment j'utilise ces librairies: shapely.geometry (sg), shapefile (sh)
J'aimerais également savoir, quelles librairies me conseillez vous qui pourrait m'être utile dans mon problème, car je pense que les librairies que j'utilise sont faites principalement pour Python 2, et sont moins optimales pour Python 3 

(Remarque) 
Le but étant de savoir si un point (x, y) appartient au Polygon de mon departement du shapefile 
Si le point est dans le Polygon, alors le client à la couverture réseau de (opérateur, techno (2G, 3G ...)) 

(Complément ) 
Pour être plus précis, pour le moment je procède de la sorte: 
- Recuperation du departement de mon client 
	=> dept 
- Création d'un point avec la longitude (x) et latitude (y) des coordonées gps du client 
	=> pt = Point (x, y) 
- Ouverture du fichier de formes
	=> sf = sh.Reader (". shp") 
- Extraction de la géométrie du département de mon shapefile 
	=> shp = sf.shape (dept) 
- Création d'un MultiPolygon à partir de "shp" 
	=> geoj = sh .Shape (shp.shapeType, shp.points, shp.parts) .__ geo_interface__) 
	=> multi = sg.shape (geoj) 
- vérifie si mon point est dans cette géométrie 
	=> pt.within (multi) 
	
(Problème) 
Le problème est que peu importe le point, cette dernière instruction me retourne toujours False même avec "pt = shp.points [0]" (point appartenant au département) par exemple. 

J'ai remarqué que "multi" est un MultiPolygon contenant des Polygon.
multi est itérable, il est donc possible de récupérer chaque Polygon et de faire la vérification que mon point "pt" est dans le Polygon 
	=> pour poly en multi: 
		=> pt.within (poly) 
Mais là encore cela me retourne False. .. 
Ce Polygon contient les Points représentant les lignes (limites) du Polygon, mais il semblerait que ces Points ne sont pas castés en "Point", il s'agirait de liste ou tuple uniquement, cela pourrait être la cause de mon problème. 

(Conclusion) 
Pourriez-vous m'orienter sur ma demande initiale, m'indiquer si j'ai omis un détail qui serait la cause de mon problème, ou une autre démarche (ma démarche n'est peut-être pas bonne).
Je suis ouvert à toutes les propositions (possibilité sur qgis?), À partir du moment ou je pourrais exporter mes résultats dans une table. 
Merci pour l'aide que vous pourrez m'apporter, ainsi que, pour toutes les informations utiles. 


Annotation : Demande de jeu de données (set) (Accessibilité )