Χρήση του OpenStreetMap API με τη βάση δεδομένων και την οπτικοποίηση δεδομένων στο OpenStreetMap. Σε αυτό το έργο, χρησιμοποιούμε το δωρεάν OpenStreetMap API (υπηρεσία Nominatim), για να μετατρέψουμε τα ονόματα των πανεπιστημίων που έχουν καταχωρίσει οι χρήστες σε γεωγραφικές τοποθεσίες και, στη συνέχεια, τοποθετούμε τα επεξεργασμένα δεδομένα στον χάρτη OpenStreetMap. Σημείωση: Μετά τα Windows, σας συνιστούμε να χρησιμοποιείτε το τερματικό PowerShell, ώστε να μην αντιμετωπίζει προβλήματα με την εμφάνιση χαρακτήρων UTF-8. Το πρόγραμμα πρέπει να εγκατασταθεί για να προβάλετε και να τροποποιήσετε τη βάση δεδομένων DB Browser για SQLite: https://sqlitebrowser.org/ Όσον αφορά τους όρους χρήσης της υπηρεσίας Nominatim, υπάρχει ένδειξη να συμφωνήσετε σε ένα ερώτημα το πολύ, ανά δευτερόλεπτο (η υπηρεσία είναι δωρεάν, επομένως, εάν δημιουργούσαμε πολύ μεγάλο αριθμό ερωτήσεων σε σύντομο χρονικό διάστημα, πιθανότατα γρήγορα θα αποκλειόμασταν από την πρόσβαση στο API). Χωρίζουμε την εργασία μας σε δύο φάσεις. Σε πρώτη φάση, παίρνουμε τα δεδομένα μας από το where.data και τα διαβάζουμε γραμμή προς γραμμή, ενώ διαβάζουμε τη γεωκωδικοποιημένη απάντηση του διακομιστή Nominatim και την αποθηκεύουμε στη βάση δεδομένων (αρχείο opengeo.sqlite). Προτού χρησιμοποιήσουμε το Geocoding API, απλώς ελέγχουμε αν έχουμε ήδη δεδομένα για τη συγκεκριμένη γραμμή, οπότε δεν θα μπορούμε να επανεκκινήσουμε το πρόγραμμα που χρειάστηκε για να ρωτήσουμε το API για δεύτερη φορά. Ανά πάσα στιγμή, μπορείτε να ξεκινήσετε ολόκληρη τη διαδικασία από την αρχή, διαγράφοντας απλώς το αρχείο opengeo.sqlite που δημιουργήθηκε. Εκτελέστε το πρόγραμμα geoload.py. Αυτό το πρόγραμμα θα διαβάσει γραμμές εισόδου από το αρχείο where.data και θα ελέγξει, για κάθε σειρά, για να δει αν βρίσκεται ήδη στη βάση δεδομένων και εάν δεν έχουμε δεδομένα για την τοποθεσία που υποβάλλεται σε επεξεργασία, θα ενεργοποιήσει ένα ερώτημα API γεωκωδικοποίησης, για την ανάκτηση δεδομένων και θα το αποθηκεύσει στο SQLite. Ακολουθεί ένα παράδειγμα εκτέλεσης, αφού ορισμένα βρίσκονται ήδη στα δεδομένα της βάσης δεδομένων: python3 geoload.py Βρέθηκε στη βάση δεδομένων AGH University of Science and Technology Βρέθηκε στη βάση δεδομένων Academy of Fine Arts Warsaw Poland Βρέθηκε στη βάση δεδομένων American University in Cairo Βρέθηκε στη βάση δεδομένων Arizona State University Βρέθηκε στη βάση δεδομένων Athens Information Technology Ανάκτηση του https://py4e-data.dr-chuck.net/opengeo?q=BITS+Pilani Ανακτήθηκαν 794 χαρακτήρες {"type":"FeatureColl Ανάκτηση του https://py4e-data.dr-chuck.net/opengeo?q=Babcock+University Ανακτήθηκαν 760 χαρακτήρες {"type":"FeatureColl Ανάκτηση του https://py4e-data.dr-chuck.net/opengeo?q=Banaras+Hindu+University Ανακτήθηκαν 866 χαρακτήρες {"type":"FeatureColl ... Οι πρώτες πέντε τοποθεσίες βρίσκονται ήδη στη βάση δεδομένων, και έτσι παραλείπονται. Το πρόγραμμα επεξεργάζεται δεδομένα μέχρι να βρει μη αποθηκευμένες τοποθεσίες και να αρχίσει να τις ζητά από το API. Το αρχείο geoload.py μπορεί να διακοπεί ανά πάσα στιγμή, επιπλέον ο κώδικας περιέχει έναν μετρητή (τη μεταβλητή 'count') που μπορεί να χρησιμοποιηθεί για τον περιορισμό των αριθμητικών συνδέσεων στο API γεωκωδικοποίησης, σε μια δεδομένη εκκίνηση προγράμματος. Αφού φορτωθούν τα δεδομένα στο opengeo.sqlite, μπορείτε να τα οπτικοποιήσετε με το geodump.py. Αυτό το πρόγραμμα διαβάζει τη βάση δεδομένων και γράφει το αρχείο where.js, που περιέχει τοποθεσίες, γεωγραφικά πλάτη και μήκη με τη μορφή εκτελέσιμου JavaScript. Το αρχείο ZIP που κατεβάσατε περιέχει ήδη το Where.js που δημιουργήθηκε, αλλά μπορείτε να το δημιουργήσετε ξανά για να ελέγξετε τη λειτουργία του προγράμματος geodump.py. Το πρόγραμμα geodump.py ξεκινά ως εξής: python3 geodump.py AGH University of Science and Technology, Czarnowiejska, Czarna Wieś, Krowodrza, Kraków, Lesser Poland Voivodeship, 31-126, Poland 50.065703299999996 19.918958667058632 Academy of Fine Arts, Krakowskie Przedmieście, Northern Śródmieście, Śródmieście, Warsaw, Masovian Voivodeship, 00-046, Poland 52.2397515 21.015564130658333 ... 260 γραμμές γράφτηκαν στο where.js Ανοίξτε το where.html για να προβάλετε τα δεδομένα σε ένα πρόγραμμα περιήγησης. Το αρχείο Where.html αποτελείται από HTML και JavaScript, που χρησιμοποιούνται για την οπτικοποίηση χαρτών OpenStreetMap, χρησιμοποιώντας τη βιβλιοθήκη OpenLayers. Η σελίδα διαβάζει τα πιο πρόσφατα δεδομένα από το αρχείο Where.js για να λάβει τα απαραίτητα δεδομένα για την οπτικοποίηση. Ακολουθεί η μορφή του αρχείου Where.js: myData = [ [50.065703299999996,19.918958667058632, 'AGH University of Science and Technology, Czarnowiejs ka, Czarna Wieś, Krowodrza, Kraków, Lesser Poland Voivodeship, 31-126, Poland '], [52.2397515,21.015564130658333, 'Academy of Fine Arts, Krakowskie Przedmieście e, Śródmieście Północne, Śródmieście, Warsaw, Masovian Voivodeship, 00-046, Poland'], ... ]; Αυτή είναι μια λίστα με λίστες, γραμμένες σε JavaScript. Η γλώσσα σύνταξη λίστας της JavaScript είναι παρόμοια με τη σύνταξη της Python. Για να δείτε τις τοποθεσίες στον χάρτη, ανοίξτε το αρχείο where.html στον προγράμματος περιήγησής σας. Μπορείτε να τοποθετήσετε τον δείκτη του ποντικιού πάνω σε κάθε καρφίτσα του χάρτη και να κάνετε κλικ σε αυτήν, ώστε να βρείτε τη θέση που επέστρεψε το API κωδικοποίησης για την είσοδο που εισήγαγε ο χρήστης. Εάν δεν βλέπετε το αρχείο Where.html όταν το ανοίγετε, δεν υπάρχουν δεδομένα, ελέγξτε εάν η JavaScript είναι ενεργοποιημένη στο πρόγραμμα περιήγησής σας ή ελέγξτε εάν υπάρχουν σφάλματα στην κονσόλα ανάπτυξης του προγράμματος περιήγησής σας.