Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.76 KB | None | 0 0
  1. from osgeo import ogr , osr # J'importe les librairies ogr et osr(pour la gestion des projections)
  2. # pour des fins d'analyse, je dois passer en système métrique
  3. # je vais définir une reprojection. Pour mon système de départ des points lat, long (epsg:4326)
  4. source = osr.SpatialReference()
  5. source.ImportFromEPSG(4326)
  6. # je définis mon système de destination (epsg:2145 -> mercator)
  7. target = osr.SpatialReference()
  8. target.ImportFromEPSG(2145)
  9. # je calcule la transformation
  10. transform = osr.CoordinateTransformation(source , target)
  11.  
  12. # Je défini l'entrée des coordonnées lat,long du point d'incident et je crée le point
  13. incidentpoint = raw_input("Entrer la latitude et la longitude du lieu de l'incident(exemple 45.54359,-73.64026): ")
  14. latlong = incidentpoint.split(',')
  15. point = ogr.Geometry(ogr.wkbPoint)
  16. point.AddPoint(float(latlong[1]) , float(latlong[0]))
  17. point.Transform(transform) # je projète le point
  18. point.ExportToWkt()
  19.  
  20. # Je défini l'entrée de donnée et la création d'une zone de restriction
  21. buffer = raw_input("Entrer le buffer en mètre (exemple: 500): ")
  22. # je vais créer un buffer
  23. restricted_area = point.Buffer(float(buffer))
  24.  
  25. class MTL_Incident:
  26. """ classe MTL_Incident devra contenir toutes
  27. les méthode de gestion des incidents dans la ville de Montréal.
  28. """
  29.  
  30. def __init__(self , name):
  31. """ __init__ est le constructeur de MTL_Incident.
  32. Note:`self` est un paramètre qu'il n'est pas nécessaire d'envoyer.
  33. Args:name (str): nom de la classe MTL_Incident.
  34. """
  35. self.name = name
  36.  
  37. def FetchShapefile(self, layer):
  38. """ FetchShapefile est une méthode permettant de charger une couche shapefile.
  39. Note:`self` est un paramètre qu'il n'est pas nécessaire d'envoyer.
  40. Args:
  41. layer: c'est le nom de la couche à charger.
  42. """
  43. driver = ogr.GetDriverByName('ESRI Shapefile') # Je déclare le driver utilisé pour lire les données
  44. datasource_layer = driver.Open(layer) # Je procéde à la lecture du fichier et création de datasource
  45. Layer = datasource_layer.GetLayer() # Je charge le fichier
  46. return Layer # je renvois la couche
  47.  
  48.  
  49. def GetCameras(self, header = True):
  50.  
  51. """ GetCameraFile est une méthode permettant de charger le fichier csv des caméras.
  52. Note:`self` est un paramètre qu'il n'est pas nécessaire d'envoyer.
  53. Args: pas nécessaire.
  54. """
  55. listCamera = [] # je crée la liste devant contenir les données des camèras
  56.  
  57. import csv
  58. cam = []
  59. with open('cameras_de_circulation_Mtl.csv' , 'rb') as csvfile: # j,importe un fichier csv des caméras
  60. csvreader = csv.reader(csvfile , delimiter=',') # je lis le fichier csv
  61. for row in csvreader:
  62. cam.append(row) # je rempli la liste cam avec toutes les données du csv
  63.  
  64. for d in cam: # je parcours la liste cam et
  65. listCamera.append([d[2] , d[3] , d[7] , d[8] , d[11]])
  66. # je rempli ma liste listCamera avec les données utiles :
  67. # emplacement de la caméra,son id, sa latitude
  68. # et sa longitude ainsi que l'URL de l'image en direct)
  69. if header:
  70. del listCamera[0] # Si la listCamera possède une entête, je la supprime
  71. CameraLocation = []
  72. for c in listCamera:
  73. latitude_cam = float(c[2])
  74. longitude_cam = float(c[3])
  75. point = ogr.Geometry(ogr.wkbPoint)
  76. point.AddPoint(longitude_cam, latitude_cam)
  77. point.Transform(transform) # je projète le point
  78. point.ExportToWkt()
  79. CameraLocation.append([c[0], c[1], c[4], point])
  80. return CameraLocation
  81.  
  82. def GetPopulationFile(self):
  83.  
  84. """ PopulationAffected est une méthode permettant d'estimer le nombre des personnes touchées.
  85. Note:`self` est un paramètre qu'il n'est pas nécessaire d'envoyer.
  86. Args: pas nécessaire.
  87. """
  88.  
  89. population = [] # je crée la liste devant contenir les données de la population
  90. pop = []
  91. list = []
  92. import csv
  93. with open('Qc_short_Aires_diffusion_2006_MTL.csv' , 'rb') as csvfile: #j'importe un fichier csv des populations
  94. csvreader = csv.reader(csvfile, delimiter=',', quotechar='"') # je lis le fichier csv
  95.  
  96. for row in csvreader:
  97. pop.append(row)
  98.  
  99. del pop[0]
  100.  
  101. for p in pop:
  102. list.append([p[1] , p[6] , p[9] , p[10]])
  103.  
  104. return list
  105.  
  106.  
  107. m = MTL_Incident('Montreal incident manager apps')
  108. print m.GetCameras()
  109. print len(m.GetCameras())
  110. print m.GetPopulationFile()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement