|
3 weeks ago | |
---|---|---|
.. | ||
README.md | 3 weeks ago | |
assignment.md | 3 weeks ago |
README.md
Οπτικοποίηση δεδομένων τοποθεσίας
Σκίτσο από τη Nitya Narasimhan. Κάντε κλικ στην εικόνα για μεγαλύτερη έκδοση.
Αυτό το βίντεο παρέχει μια επισκόπηση του Azure Maps με IoT, μια υπηρεσία που θα καλυφθεί σε αυτό το μάθημα.
🎥 Κάντε κλικ στην παραπάνω εικόνα για να παρακολουθήσετε το βίντεο
Ερωτηματολόγιο πριν το μάθημα
Εισαγωγή
Στο προηγούμενο μάθημα μάθατε πώς να λαμβάνετε δεδομένα GPS από τους αισθητήρες σας και να τα αποθηκεύετε στο cloud σε ένα δοχείο αποθήκευσης χρησιμοποιώντας serverless κώδικα. Τώρα θα ανακαλύψετε πώς να οπτικοποιήσετε αυτά τα σημεία σε έναν χάρτη Azure. Θα μάθετε πώς να δημιουργείτε έναν χάρτη σε μια ιστοσελίδα, να κατανοείτε τη μορφή δεδομένων GeoJSON και πώς να τη χρησιμοποιείτε για να σχεδιάζετε όλα τα καταγεγραμμένα σημεία GPS στον χάρτη σας.
Σε αυτό το μάθημα θα καλύψουμε:
- Τι είναι η οπτικοποίηση δεδομένων
- Υπηρεσίες χαρτών
- Δημιουργία πόρου Azure Maps
- Εμφάνιση χάρτη σε ιστοσελίδα
- Η μορφή GeoJSON
- Σχεδίαση δεδομένων GPS σε χάρτη χρησιμοποιώντας GeoJSON
💁 Αυτό το μάθημα θα περιλαμβάνει μια μικρή ποσότητα HTML και JavaScript. Αν θέλετε να μάθετε περισσότερα για την ανάπτυξη ιστοσελίδων χρησιμοποιώντας HTML και JavaScript, δείτε το Web development for beginners.
Τι είναι η οπτικοποίηση δεδομένων
Η οπτικοποίηση δεδομένων, όπως υποδηλώνει το όνομα, αφορά την απεικόνιση δεδομένων με τρόπους που διευκολύνουν την κατανόηση από τους ανθρώπους. Συνήθως συνδέεται με γραφήματα και διαγράμματα, αλλά είναι οποιοσδήποτε τρόπος απεικόνισης δεδομένων που βοηθά τους ανθρώπους όχι μόνο να κατανοήσουν καλύτερα τα δεδομένα, αλλά και να λάβουν αποφάσεις.
Παίρνοντας ένα απλό παράδειγμα - στο έργο της φάρμας καταγράψατε μετρήσεις υγρασίας του εδάφους. Ένας πίνακας δεδομένων υγρασίας του εδάφους που καταγράφηκε κάθε ώρα για την 1η Ιουνίου 2021 μπορεί να μοιάζει με τον παρακάτω:
Ημερομηνία | Μέτρηση |
---|---|
01/06/2021 00:00 | 257 |
01/06/2021 01:00 | 268 |
01/06/2021 02:00 | 295 |
01/06/2021 03:00 | 305 |
01/06/2021 04:00 | 325 |
01/06/2021 05:00 | 359 |
01/06/2021 06:00 | 398 |
01/06/2021 07:00 | 410 |
01/06/2021 08:00 | 429 |
01/06/2021 09:00 | 451 |
01/06/2021 10:00 | 460 |
01/06/2021 11:00 | 452 |
01/06/2021 12:00 | 420 |
01/06/2021 13:00 | 408 |
01/06/2021 14:00 | 431 |
01/06/2021 15:00 | 462 |
01/06/2021 16:00 | 432 |
01/06/2021 17:00 | 402 |
01/06/2021 18:00 | 387 |
01/06/2021 19:00 | 360 |
01/06/2021 20:00 | 358 |
01/06/2021 21:00 | 354 |
01/06/2021 22:00 | 356 |
01/06/2021 23:00 | 362 |
Ως άνθρωπος, η κατανόηση αυτών των δεδομένων μπορεί να είναι δύσκολη. Είναι ένας τοίχος αριθμών χωρίς νόημα. Ως πρώτο βήμα για την οπτικοποίηση αυτών των δεδομένων, μπορούν να σχεδιαστούν σε ένα διάγραμμα γραμμών:
Αυτό μπορεί να βελτιωθεί περαιτέρω προσθέτοντας μια γραμμή που δείχνει πότε ενεργοποιήθηκε το αυτόματο σύστημα ποτίσματος σε μια μέτρηση υγρασίας εδάφους 450:
Αυτό το διάγραμμα δείχνει πολύ γρήγορα όχι μόνο ποια ήταν τα επίπεδα υγρασίας του εδάφους, αλλά και τα σημεία όπου ενεργοποιήθηκε το σύστημα ποτίσματος.
Τα διαγράμματα δεν είναι το μόνο εργαλείο για την οπτικοποίηση δεδομένων. Οι συσκευές IoT που παρακολουθούν τον καιρό μπορούν να έχουν εφαρμογές ιστού ή κινητών που απεικονίζουν τις καιρικές συνθήκες χρησιμοποιώντας σύμβολα, όπως ένα σύμβολο σύννεφου για συννεφιασμένες ημέρες, ένα σύννεφο βροχής για βροχερές ημέρες και ούτω καθεξής. Υπάρχουν πάρα πολλοί τρόποι για την οπτικοποίηση δεδομένων, κάποιοι σοβαροί, κάποιοι διασκεδαστικοί.
✅ Σκεφτείτε τρόπους με τους οποίους έχετε δει δεδομένα να απεικονίζονται. Ποιοι μέθοδοι ήταν οι πιο σαφείς και σας επέτρεψαν να λάβετε αποφάσεις πιο γρήγορα;
Οι καλύτερες απεικονίσεις επιτρέπουν στους ανθρώπους να λαμβάνουν αποφάσεις γρήγορα. Για παράδειγμα, η ύπαρξη ενός τοίχου με δείκτες που δείχνουν κάθε είδους μετρήσεις από βιομηχανικά μηχανήματα είναι δύσκολο να επεξεργαστεί, αλλά ένα κόκκινο φως που αναβοσβήνει όταν κάτι πάει στραβά επιτρέπει σε έναν άνθρωπο να λάβει μια απόφαση. Μερικές φορές η καλύτερη απεικόνιση είναι ένα φως που αναβοσβήνει!
Όταν εργάζεστε με δεδομένα GPS, η πιο σαφής απεικόνιση μπορεί να είναι η σχεδίαση των δεδομένων σε έναν χάρτη. Ένας χάρτης που δείχνει φορτηγά παράδοσης, για παράδειγμα, μπορεί να βοηθήσει τους εργαζόμενους σε ένα εργοστάσιο επεξεργασίας να δουν πότε θα φτάσουν τα φορτηγά. Αν αυτός ο χάρτης δείχνει περισσότερα από απλές εικόνες φορτηγών στις τρέχουσες τοποθεσίες τους, αλλά δίνει μια ιδέα για το περιεχόμενο ενός φορτηγού, τότε οι εργαζόμενοι στο εργοστάσιο μπορούν να προγραμματίσουν ανάλογα - αν δουν ένα φορτηγό ψυγείο κοντά, ξέρουν να προετοιμάσουν χώρο σε ένα ψυγείο.
Υπηρεσίες χαρτών
Η εργασία με χάρτες είναι μια ενδιαφέρουσα άσκηση, και υπάρχουν πολλές επιλογές όπως Bing Maps, Leaflet, Open Street Maps και Google Maps. Σε αυτό το μάθημα, θα μάθετε για το Azure Maps και πώς μπορούν να εμφανίσουν τα δεδομένα GPS σας.
Το Azure Maps είναι "μια συλλογή γεωχωρικών υπηρεσιών και SDK που χρησιμοποιούν φρέσκα δεδομένα χαρτογράφησης για να παρέχουν γεωγραφικό πλαίσιο σε εφαρμογές ιστού και κινητών." Οι προγραμματιστές παρέχονται με εργαλεία για τη δημιουργία όμορφων, διαδραστικών χαρτών που μπορούν να κάνουν πράγματα όπως να παρέχουν προτεινόμενες διαδρομές κυκλοφορίας, να δίνουν πληροφορίες για περιστατικά κυκλοφορίας, εσωτερική πλοήγηση, δυνατότητες αναζήτησης, πληροφορίες υψομέτρου, υπηρεσίες καιρού και πολλά άλλα.
✅ Πειραματιστείτε με μερικά δείγματα κώδικα χαρτογράφησης
Μπορείτε να εμφανίσετε τους χάρτες ως κενό καμβά, πλακίδια, δορυφορικές εικόνες, δορυφορικές εικόνες με υπερτιθέμενους δρόμους, διάφορους τύπους χαρτών σε κλίμακα του γκρι, χάρτες με σκιασμένη ανακούφιση για να δείξετε υψόμετρο, χάρτες νυχτερινής προβολής και έναν χάρτη υψηλής αντίθεσης. Μπορείτε να λαμβάνετε ενημερώσεις σε πραγματικό χρόνο στους χάρτες σας ενσωματώνοντάς τους με το Azure Event Grid. Μπορείτε να ελέγξετε τη συμπεριφορά και την εμφάνιση των χαρτών σας ενεργοποιώντας διάφορους ελέγχους για να επιτρέψετε στον χάρτη να αντιδρά σε γεγονότα όπως pinch, drag και click. Για να ελέγξετε την εμφάνιση του χάρτη σας, μπορείτε να προσθέσετε επίπεδα που περιλαμβάνουν φυσαλίδες, γραμμές, πολύγωνα, θερμικούς χάρτες και άλλα. Ποιο στυλ χάρτη θα υλοποιήσετε εξαρτάται από την επιλογή του SDK.
Μπορείτε να αποκτήσετε πρόσβαση στις APIs του Azure Maps αξιοποιώντας το REST API, το Web SDK, ή, αν δημιουργείτε μια εφαρμογή κινητού, το Android SDK.
Σε αυτό το μάθημα, θα χρησιμοποιήσετε το Web SDK για να σχεδιάσετε έναν χάρτη και να εμφανίσετε τη διαδρομή της τοποθεσίας GPS του αισθητήρα σας.
Δημιουργία πόρου Azure Maps
Το πρώτο σας βήμα είναι να δημιουργήσετε έναν λογαριασμό Azure Maps.
Εργασία - δημιουργία πόρου Azure Maps
-
Εκτελέστε την παρακάτω εντολή από το Terminal ή το Command Prompt για να δημιουργήσετε έναν πόρο Azure Maps στην ομάδα πόρων
gps-sensor
:az maps account create --name gps-sensor \ --resource-group gps-sensor \ --accept-tos \ --sku S1
Αυτό θα δημιουργήσει έναν πόρο Azure Maps με το όνομα
gps-sensor
. Η βαθμίδα που χρησιμοποιείται είναιS1
, η οποία είναι μια πληρωμένη βαθμίδα που περιλαμβάνει μια σειρά από δυνατότητες, αλλά με γενναιόδωρο αριθμό δωρεάν κλήσεων.💁 Για να δείτε το κόστος χρήσης του Azure Maps, δείτε τη σελίδα τιμολόγησης του Azure Maps.
-
Θα χρειαστείτε ένα API key για τον πόρο χαρτών. Χρησιμοποιήστε την παρακάτω εντολή για να λάβετε αυτό το κλειδί:
az maps account keys list --name gps-sensor \ --resource-group gps-sensor \ --output table
Κρατήστε ένα αντίγραφο της τιμής
PrimaryKey
.
Εμφάνιση χάρτη σε ιστοσελίδα
Τώρα μπορείτε να κάνετε το επόμενο βήμα, που είναι να εμφανίσετε τον χάρτη σας σε μια ιστοσελίδα. Θα χρησιμοποιήσουμε μόνο ένα αρχείο html
για τη μικρή σας εφαρμογή ιστού. Λάβετε υπόψη ότι σε ένα περιβάλλον παραγωγής ή ομάδας, η εφαρμογή ιστού σας πιθανότατα θα έχει περισσότερα μέρη που κινούνται!
Εργασία - εμφάνιση χάρτη σε ιστοσελίδα
-
Δημιουργήστε ένα αρχείο με το όνομα index.html σε έναν φάκελο κάπου στον τοπικό σας υπολογιστή. Προσθέστε HTML markup για να κρατήσετε έναν χάρτη:
<html> <head> <style> #myMap { width:100%; height:100%; } </style> </head> <body onload="init()"> <div id="myMap"></div> </body> </html>
Ο χάρτης θα φορτωθεί στο
div
με το όνομαmyMap
. Μερικά στυλ του επιτρέπουν να καλύπτει το πλάτος και το ύψος της σελίδας.🎓 Ένα
div
είναι μια ενότητα μιας ιστοσελίδας που μπορεί να ονομαστεί και να μορφοποιηθεί. -
Κάτω από την ετικέτα
<head>
, προσθέστε ένα εξωτερικό φύλλο στυλ για να ελέγξετε την εμφάνιση του χάρτη και ένα εξωτερικό script από το Web SDK για να διαχειριστεί τη συμπεριφορά του:<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/2/atlas.min.css" type="text/css" /> <script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/2/atlas.min.js"></script>
Αυτό το φύλλο στυλ περιέχει τις ρυθμίσεις για το πώς φαίνεται ο χάρτης, και το αρχείο script περιέχει κώδικα για τη φόρτωση του χάρτη. Η προσθήκη αυτού του κώδικα είναι παρόμοια με την εισαγωγή αρχείων header στο C++ ή την εισαγωγή modules στο Python.
-
Κάτω από αυτό το script, προσθέστε ένα script block για να εκκινήσετε τον χάρτη.
<script type='text/javascript'> function init() { var map = new atlas.Map('myMap', { center: [-122.26473, 47.73444], zoom: 12, authOptions: { authType: "subscriptionKey", subscriptionKey: "<subscription_key>", } }); } </script>
Αντικαταστήστε το
<subscription_key>
με το API key για τον λογαριασμό σας στο Azure Maps.Αν ανοίξετε τη σελίδα
index.html
σε έναν web browser, θα πρέπει να δείτε έναν χάρτη να φορτώνεται και να εστιάζει στην περιοχή του Σιάτλ.✅ Πειραματιστείτε με τις παραμέτρους zoom και center για να αλλάξετε την εμφάνιση του χάρτη σας. Μπορείτε να προσθέσετε διαφορετικές συντεταγμένες που αντιστοιχούν στο γεωγραφικό πλάτος και μήκος των δεδομένων σας για να επανακεντρώσετε τον χάρτη.
💁 Ένας καλύτερος τρόπος για να εργαστείτε με εφαρμογές ιστού τοπικά είναι να εγκαταστήσετε το http-server. Θα χρειαστείτε το node.js και το npm εγκατεστημένα πριν χρησιμοποιήσετε αυτό το εργαλείο. Μόλις εγκατασταθούν αυτά τα εργαλεία, μπορείτε να μεταβείτε στη θέση του αρχείου
index.html
και να πληκτρολογήσετεhttp-server
. Η εφαρμογή ιστού θα ανοίξει σε έναν τοπικό web server http://127.0.0.1:8080/.
Η μορφή GeoJSON
Τώρα που έχετε τη web app σας έτοιμη με τον χάρτη να εμφανίζεται, πρέπει να εξαγάγετε δεδομένα GPS από τον λογαριασμό αποθήκευσης σας και να τα εμφανίσετε σε ένα επίπεδο δεικτών πάνω στον χάρτη. Πριν το ✅ Το Azure Maps υποστηρίζει το πρότυπο GeoJSON καθώς και ορισμένα βελτιωμένα χαρακτηριστικά, όπως η δυνατότητα σχεδίασης κύκλων και άλλων γεωμετριών.
Απεικόνιση δεδομένων GPS σε χάρτη χρησιμοποιώντας GeoJSON
Τώρα είστε έτοιμοι να χρησιμοποιήσετε τα δεδομένα από την αποθήκευση που δημιουργήσατε στο προηγούμενο μάθημα. Υπενθυμίζεται ότι αυτά αποθηκεύονται ως αρχεία σε blob storage, οπότε θα χρειαστεί να ανακτήσετε τα αρχεία και να τα αναλύσετε ώστε το Azure Maps να μπορεί να χρησιμοποιήσει τα δεδομένα.
Εργασία - διαμόρφωση αποθήκευσης για πρόσβαση από ιστοσελίδα
Αν κάνετε μια κλήση στην αποθήκευσή σας για να ανακτήσετε τα δεδομένα, μπορεί να εκπλαγείτε βλέποντας σφάλματα στην κονσόλα του προγράμματος περιήγησής σας. Αυτό συμβαίνει επειδή πρέπει να ορίσετε δικαιώματα για το CORS σε αυτήν την αποθήκευση, ώστε να επιτρέψετε σε εξωτερικές εφαρμογές ιστού να διαβάζουν τα δεδομένα της.
🎓 Το CORS σημαίνει "Cross-Origin Resource Sharing" και συνήθως πρέπει να ρυθμιστεί ρητά στο Azure για λόγους ασφαλείας. Αποτρέπει μη αναμενόμενες ιστοσελίδες από το να έχουν πρόσβαση στα δεδομένα σας.
-
Εκτελέστε την παρακάτω εντολή για να ενεργοποιήσετε το CORS:
az storage cors add --methods GET \ --origins "*" \ --services b \ --account-name <storage_name> \ --account-key <key1>
Αντικαταστήστε το
<storage_name>
με το όνομα του λογαριασμού αποθήκευσής σας. Αντικαταστήστε το<key1>
με το κλειδί του λογαριασμού αποθήκευσής σας.Αυτή η εντολή επιτρέπει σε οποιονδήποτε ιστότοπο (ο χαρακτήρας μπαλαντέρ
*
σημαίνει οποιοσδήποτε) να κάνει ένα αίτημα GET, δηλαδή να ανακτήσει δεδομένα από τον λογαριασμό αποθήκευσής σας. Η επιλογή--services b
σημαίνει ότι αυτή η ρύθμιση εφαρμόζεται μόνο για blobs.
Εργασία - φόρτωση δεδομένων GPS από την αποθήκευση
-
Αντικαταστήστε το σύνολο του περιεχομένου της συνάρτησης
init
με τον παρακάτω κώδικα:fetch("https://<storage_name>.blob.core.windows.net/gps-data/?restype=container&comp=list") .then(response => response.text()) .then(str => new window.DOMParser().parseFromString(str, "text/xml")) .then(xml => { let blobList = Array.from(xml.querySelectorAll("Url")); blobList.forEach(async blobUrl => { loadJSON(blobUrl.innerHTML) }); }) .then( response => { map = new atlas.Map('myMap', { center: [-122.26473, 47.73444], zoom: 14, authOptions: { authType: "subscriptionKey", subscriptionKey: "<subscription_key>", } }); map.events.add('ready', function () { var source = new atlas.source.DataSource(); map.sources.add(source); map.layers.add(new atlas.layer.BubbleLayer(source)); source.add(features); }) })
Αντικαταστήστε το
<storage_name>
με το όνομα του λογαριασμού αποθήκευσής σας. Αντικαταστήστε το<subscription_key>
με το API key για τον λογαριασμό σας στο Azure Maps.Εδώ συμβαίνουν αρκετά πράγματα. Πρώτα, ο κώδικας ανακτά τα δεδομένα GPS από το blob container σας χρησιμοποιώντας ένα URL endpoint που δημιουργείται με βάση το όνομα του λογαριασμού αποθήκευσής σας. Αυτό το URL ανακτά από το
gps-data
, υποδεικνύοντας ότι ο τύπος του πόρου είναι container (restype=container
), και παραθέτει πληροφορίες για όλα τα blobs. Αυτή η λίστα δεν επιστρέφει τα ίδια τα blobs, αλλά επιστρέφει ένα URL για κάθε blob που μπορεί να χρησιμοποιηθεί για τη φόρτωση των δεδομένων του blob.💁 Μπορείτε να εισάγετε αυτό το URL στο πρόγραμμα περιήγησής σας για να δείτε λεπτομέρειες για όλα τα blobs στο container σας. Κάθε στοιχείο θα έχει μια ιδιότητα
Url
που μπορείτε επίσης να φορτώσετε στο πρόγραμμα περιήγησής σας για να δείτε το περιεχόμενο του blob.Στη συνέχεια, ο κώδικας φορτώνει κάθε blob, καλώντας μια συνάρτηση
loadJSON
, η οποία θα δημιουργηθεί στη συνέχεια. Έπειτα, δημιουργεί τον έλεγχο του χάρτη και προσθέτει κώδικα στο γεγονόςready
. Αυτό το γεγονός καλείται όταν ο χάρτης εμφανίζεται στην ιστοσελίδα.Το γεγονός
ready
δημιουργεί μια πηγή δεδομένων Azure Maps - ένα container που περιέχει δεδομένα GeoJSON που θα συμπληρωθούν αργότερα. Αυτή η πηγή δεδομένων χρησιμοποιείται στη συνέχεια για τη δημιουργία ενός bubble layer - δηλαδή ενός συνόλου κύκλων στον χάρτη που είναι κεντραρισμένοι σε κάθε σημείο του GeoJSON. -
Προσθέστε τη συνάρτηση
loadJSON
στο μπλοκ του script σας, κάτω από τη συνάρτησηinit
:var map, features; function loadJSON(file) { var xhr = new XMLHttpRequest(); features = []; xhr.onreadystatechange = function () { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { gps = JSON.parse(xhr.responseText) features.push( new atlas.data.Feature(new atlas.data.Point([parseFloat(gps.gps.lon), parseFloat(gps.gps.lat)])) ) } } }; xhr.open("GET", file, true); xhr.send(); }
Αυτή η συνάρτηση καλείται από τη ρουτίνα fetch για να αναλύσει τα δεδομένα JSON και να τα μετατρέψει ώστε να διαβαστούν ως συντεταγμένες γεωγραφικού μήκους και πλάτους σε μορφή geoJSON. Αφού αναλυθούν, τα δεδομένα ορίζονται ως μέρος ενός geoJSON
Feature
. Ο χάρτης θα αρχικοποιηθεί και μικροί κύκλοι θα εμφανιστούν γύρω από τη διαδρομή που απεικονίζουν τα δεδομένα σας: -
Φορτώστε την HTML σελίδα στο πρόγραμμα περιήγησής σας. Θα φορτώσει τον χάρτη, στη συνέχεια θα φορτώσει όλα τα δεδομένα GPS από την αποθήκευση και θα τα απεικονίσει στον χάρτη.
💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο code.
🚀 Πρόκληση
Είναι ωραίο να μπορείτε να εμφανίζετε στατικά δεδομένα σε έναν χάρτη ως δείκτες. Μπορείτε να βελτιώσετε αυτήν την εφαρμογή ιστού ώστε να προσθέσετε κινούμενα σχέδια και να δείξετε τη διαδρομή των δεικτών με την πάροδο του χρόνου, χρησιμοποιώντας τα αρχεία json με χρονική σήμανση; Εδώ είναι μερικά παραδείγματα χρήσης κινούμενων σχεδίων σε χάρτες.
Κουίζ μετά το μάθημα
Ανασκόπηση & Αυτομελέτη
Το Azure Maps είναι ιδιαίτερα χρήσιμο για εργασία με συσκευές IoT.
- Ερευνήστε μερικές από τις χρήσεις του στην τεκμηρίωση του Azure Maps στη Microsoft docs.
- Εμβαθύνετε τις γνώσεις σας για τη δημιουργία χαρτών και σημείων διαδρομής με το δημιουργήστε την πρώτη σας εφαρμογή εύρεσης διαδρομής με το Azure Maps, αυτοκαθοδηγούμενο εκπαιδευτικό module στη Microsoft Learn.
Εργασία
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.