Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from osgeo import ogr , osr # J'importe les librairies ogr et osr(pour la gestion des projections)
- # pour des fins d'analyse, je dois passer en système métrique
- # je vais définir une reprojection. Pour mon système de départ des points lat, long (epsg:4326)
- source = osr.SpatialReference()
- source.ImportFromEPSG(4326)
- # je définis mon système de destination (epsg:2145 -> mercator)
- target = osr.SpatialReference()
- target.ImportFromEPSG(2145)
- # je calcule la transformation
- transform = osr.CoordinateTransformation(source , target)
- # Je défini l'entrée des coordonnées lat,long du point d'incident et je crée le point
- incidentpoint = raw_input("Entrer la latitude et la longitude du lieu de l'incident(exemple 45.54359,-73.64026): ")
- latlong = incidentpoint.split(',')
- point = ogr.Geometry(ogr.wkbPoint)
- point.AddPoint(float(latlong[1]) , float(latlong[0]))
- point.Transform(transform) # je projète le point
- point.ExportToWkt()
- # Je défini l'entrée de donnée et la création d'une zone de restriction
- buffer = raw_input("Entrer le buffer en mètre (exemple: 500): ")
- # je vais créer un buffer
- restricted_area = point.Buffer(float(buffer))
- class MTL_Incident:
- """ classe MTL_Incident devra contenir toutes
- les méthode de gestion des incidents dans la ville de Montréal.
- """
- def __init__(self , name):
- """ __init__ est le constructeur de MTL_Incident.
- Note:`self` est un paramètre qu'il n'est pas nécessaire d'envoyer.
- Args:name (str): nom de la classe MTL_Incident.
- """
- self.name = name
- def FetchShapefile(self, layer):
- """ FetchShapefile est une méthode permettant de charger une couche shapefile.
- Note:`self` est un paramètre qu'il n'est pas nécessaire d'envoyer.
- Args:
- layer: c'est le nom de la couche à charger.
- """
- driver = ogr.GetDriverByName('ESRI Shapefile') # Je déclare le driver utilisé pour lire les données
- datasource_layer = driver.Open(layer) # Je procéde à la lecture du fichier et création de datasource
- Layer = datasource_layer.GetLayer() # Je charge le fichier
- return Layer # je renvois la couche
- def GetCameras(self, header = True):
- """ GetCameraFile est une méthode permettant de charger le fichier csv des caméras.
- Note:`self` est un paramètre qu'il n'est pas nécessaire d'envoyer.
- Args: pas nécessaire.
- """
- listCamera = [] # je crée la liste devant contenir les données des camèras
- import csv
- cam = []
- with open('cameras_de_circulation_Mtl.csv' , 'rb') as csvfile: # j,importe un fichier csv des caméras
- csvreader = csv.reader(csvfile , delimiter=',') # je lis le fichier csv
- for row in csvreader:
- cam.append(row) # je rempli la liste cam avec toutes les données du csv
- for d in cam: # je parcours la liste cam et
- listCamera.append([d[2] , d[3] , d[7] , d[8] , d[11]])
- # je rempli ma liste listCamera avec les données utiles :
- # emplacement de la caméra,son id, sa latitude
- # et sa longitude ainsi que l'URL de l'image en direct)
- if header:
- del listCamera[0] # Si la listCamera possède une entête, je la supprime
- CameraLocation = []
- for c in listCamera:
- latitude_cam = float(c[2])
- longitude_cam = float(c[3])
- point = ogr.Geometry(ogr.wkbPoint)
- point.AddPoint(longitude_cam, latitude_cam)
- point.Transform(transform) # je projète le point
- point.ExportToWkt()
- CameraLocation.append([c[0], c[1], c[4], point])
- return CameraLocation
- def GetPopulationFile(self):
- """ PopulationAffected est une méthode permettant d'estimer le nombre des personnes touchées.
- Note:`self` est un paramètre qu'il n'est pas nécessaire d'envoyer.
- Args: pas nécessaire.
- """
- population = [] # je crée la liste devant contenir les données de la population
- pop = []
- list = []
- import csv
- with open('Qc_short_Aires_diffusion_2006_MTL.csv' , 'rb') as csvfile: #j'importe un fichier csv des populations
- csvreader = csv.reader(csvfile, delimiter=',', quotechar='"') # je lis le fichier csv
- for row in csvreader:
- pop.append(row)
- del pop[0]
- for p in pop:
- list.append([p[1] , p[6] , p[9] , p[10]])
- return list
- m = MTL_Incident('Montreal incident manager apps')
- print m.GetCameras()
- print len(m.GetCameras())
- print m.GetPopulationFile()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement