Μεθοδολογια

Η μεθοδολογία για τον γεωεντοπισμό των πυρκαγιών

Κατεβάστε τα δεδομένα Δες το άρθρο

Η χαρτογράφηση της βάσης δεδομένων που δημοσιεύει κάθε χρόνο η πυροσβεστική υπηρεσία, με τις δασικής πυρκαγιές του 2019, έγινε με αυτοματοποιημένο τρόπο μέσω της υπηρεσίας Geocoding της Google και χρήση της γλώσσας προγραμματισμού Python.

Χάρτης με τις 9500 πυρκαγιές που ξέσπασαν το 2019 στην Ελλάδα.

Το σύνολο δεδομένων από τη σελίδα ανοιχτών δεδομένων της Πυροσβεστικής Υπηρεσίας περιέχει 9500 σειρές και 32 στήλες. Πρόκειται για ένα αρκετά πλήρες σύνολο που έχει από την υπηρεσία που κατέγραψε κάθε πυρκαγιά, την ημερομηνία, ώρα, περιοχή καθώς και τι έκταση έκαψε και τι δυνάμεις απαιτήθηκαν για την κατάσβεση κάθε φωτιάς.

Για να μπορέσουμε να απεικονίσουμε κάθε πυρκαγιά στον χάρτη, έπρεπε να εντοπίσουμε τις γεωγραφικές συντεταγμένες του, δηλαδή το γεωγραφικό μήκος και πλάτος κάθε καταγεγραμμένου συμβάντος.

Το γεωγραφικό πλάτος είναι το σημείο πάνω στη γη που σχηματίζει η κατακόρυφος του τόπου με το επίπεδο του ισημερινού. Το γεωγραφικό μήκος είναι η στερεή γωνία που σχηματίζεται από το επίπεδο του μεσημβρινού που διέρχεται από το εν λόγω σημείο με το επίπεδο του πρώτου μεσημβρινού.

Για παράδειγμα η πλατεία Συντάγματος στην Αθήνα βρίσκεται στο γεωγραφικό πλάτος 37.9755° N (Βόρεια) και γεωγραφικό μήκος 23.7349° E (Ανατολικά).

Για να εντοπίσουμε τις γεωγραφικές συντεταγμένες φτιάξαμε ένα πρόγραμμα σε γλώσσα προγραμματισμού Python, το οποίο διάβασε για κάθε πυρκαγιά τον Νομό, τον Δήμο, την Περιοχή και τη Διεύθυνση που έχει καταγράψει η πυροσβεστική και στη συνέχεια έστειλε αίτημα (request) με τις πληροφορίες στην υπηρεσία γεωεντοπισμού (geocoding) της Google. Το αίτημα έγινε με χρήση της βιβλιοθήκης Requests της Python.

Η απάντηση της Google για κάθε πυρκαγιά περιείχε μεταξύ άλλων, το γεωγραφικό μήκος (lat) και πλάτος (lng) που βρήκε με βάση το αίτημά μας καθώς πόσο ακριβής είναι ο γεωεντοπισμός (loc_type). Συγκεκριμένα:

  • ROOFTOP” σημαίνει ότι το αποτέλεσμα της αναζήτησης επέστρεψε έναν ακριβή γεωκώδικα, για τον οποίο έχουμε ακριβείς πληροφορίες σε επίπεδο οδού.
  • RANGE_INTERPOLATED” σημαίνει οτι η αναζήτηση επέστρεψε ένα αποτέλεσμα κατά προσέγγιση μεταξύ δύο σημείων (π.χ διασταύρωση οδών). Αυτός ο τύπος αποτελέσματος εμφανίζεται συνήθως όταν δεν υπάρχει ακριβής διεύθυνση με οδό και αριθμό.
  •  “GEOMETRIC_CENTER” υποδηλώνει ότι η αναζήτηση επέστρεψε το γεωμετρικό κέντρο της περιοχής που βρέθηκε. Για παράδειγμα, σε μια πυρκαγιά στο νεκροταφείο Παπάγου, το αποτέλεσμα της αναζήτησης θα μας δώσει το κέντρο του νεκροταφείο.
  • APPROXIMATE” το αποτέλεσμα της αναζήτησης είναι κατά προσέγγιση.

Το πρόγραμμα για τον γεωεντοπισμό

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Για να χρησιμοποιήσετε την υπηρεσία geocoding της google 
# πρέπει να έχετε λογαριασμό στο Google Develpers Console 
# καθώς και API key. 

import pandas as pd
import requests
import numpy as np

# Εδώ βάζετε το API key που έχετε εκδόσει. 
api_key='XXX'

# Εδώ διαβάζεουμε το αρχείο excel.
df = pd.read_excel('Dasikes_Pyrkagies_2019_v1.5.xls', header=1)

for i, item in df.iterrows():
    
    # To search_str είναι οι πληροφορίες που θα στείλουμε για τον γεωεντοπισμό.
    search_str = f"{item['Νομός']} {item['Δήμος']} {item['Περιοχή']} {item['Διεύθυνση']}"
    
    geocode_url = "https://maps.googleapis.com/maps/api/geocode/json?address={}".format(search_str.lower())+'&key='+api_key
    results = requests.get(geocode_url)
    
    # Το αποτέλεσμα είναι ένα json.
    res=results.json()

    # Σώζουμε τα αποτελέσματα στο dataframe
    df.at[i, 'lat'] = res['results'][0]['geometry']['location']['lat']
    df.at[i, 'lng'] = res['results'][0]['geometry']['location']['lng']
    df.at[i, 'loc_type'] = res['results'][0]['geometry']['location_type']
    


Ο στατικός χάρτης με τις πυρκαγιές, φτιάχτηκε με το πρόγραμμα χαρτογράφησης QGIS.

Τα γραφήματα της ανάλυσης και ο διαδραστικός χάρτης, αναπτύχθηκαν με χρήση της βιβλιοθήκης Plotly.