Προσδιορισμός τοποθεσίας χωρίς GPS: πώς λειτουργεί το Yandex.Locator. Γεωστόχευση για προγραμματιστή. Τι ενδιαφέροντα πράγματα μπορούν να σας πουν τα δωρεάν API γεωπληροφοριών Γιατί χωρίς GPS και πώς αλλιώς;

Στις μέρες μας, όλο και περισσότερες εφαρμογές για κινητές συσκευές γίνονται γεω-εξαρτώμενες. Μερικά απλά δεν έχουν νόημα χωρίς γνώση της τοποθεσίας του χρήστη, ενώ άλλα γίνονται πιο άνετα με αυτό. Αυτές είναι οι λεγόμενες Υπηρεσίες βάσει τοποθεσίας (LBS): πλοηγοί, τέσσερα τετράγωνα, Instagram με φωτογραφίες με γεωγραφικές ετικέτες, ακόμη και εφαρμογές υπενθύμισης που ενεργοποιούνται κοντά σε μια συγκεκριμένη τοποθεσία, για παράδειγμα, δίπλα σε ένα γραφείο ή κατάστημα.

Για τις υπηρεσίες και τις εφαρμογές Yandex, δημιουργήσαμε τη δική μας εφαρμογή μιας μεθόδου προσδιορισμού τοποθεσίας χωρίς GPS - Yandex.Locator. Εξοικονομεί χρόνο από τον χρήστη και κάνει τις εφαρμογές μας λίγο πιο έξυπνες. Στο Navigator και στους Χάρτες, εξαλείφει την ανάγκη να εισέλθετε στο σημείο εκκίνησης της διαδρομής, ακόμα κι αν βρίσκεστε σε γκαράζ. Και όταν επιλέγετε μια ταινία στον κινηματογράφο Afisha ή ένα προϊόν στην αγορά κινητής τηλεφωνίας, βοηθάει να δείξετε αμέσως πού να τις βρείτε ακριβώς στην περιοχή σας της πόλης. Και, φυσικά, όταν αναζητάτε καφετέριες και ΑΤΜ, σας επιτρέπει να εμφανίζετε αμέσως τα πιο κοντινά, ακόμα και όταν βρίσκεστε στο μετρό.

Ανακαλύψαμε την τεχνολογία πριν από πολύ καιρό με τη μορφή ενός δωρεάν API. Σήμερα θέλουμε να σας πούμε πώς λειτουργεί.

Γιατί χωρίς GPS και πώς αλλιώς

Τα συστήματα δορυφορικής πλοήγησης (GNSS), στην περίπτωσή μας το GPS και το GLONASS, είναι η πιο ακριβής μέθοδος γεωπροσδιορισμού μέχρι σήμερα. Οι αντίστοιχες μονάδες βρίσκονται σχεδόν σε όλα τα σύγχρονα smartphone. Αλλά όχι πάντα και όχι παντού μπορεί να λύσει προβλήματα LBS.

Πρώτον, η αναζήτηση για δορυφόρους μερικές φορές διαρκεί αρκετά λεπτά και υπάρχουν καταστάσεις στις οποίες η ταχύτητα προσδιορισμού είναι σημαντική ακόμη και με απώλεια ακρίβειας. Για παράδειγμα, όταν πρέπει να δημιουργήσετε μια προκαταρκτική διαδρομή στο πρόγραμμα πλοήγησης ή να κάνετε check in. Δεύτερον, οι δορυφόροι συνήθως δεν είναι «ορατοί» σε εσωτερικούς ή υπόγειους χώρους. Τρίτον, δεν έχουν όλα τα κινητά τηλέφωνα ή ταμπλέτες μονάδες GPS και δεν υπάρχουν σχεδόν καθόλου σε φορητούς υπολογιστές. Δηλαδή, το LBS χρειάζεται εναλλακτικές.

Και, φυσικά, υπάρχουν εναλλακτικές λύσεις - μπορείτε να προσδιορίσετε την τοποθεσία σας από κοντινούς πύργους GSM, δίκτυα Wi-Fi, ακόμη και από τη διεύθυνση IP. Η ακρίβεια καθεμιάς από αυτές τις μεθόδους είναι πολύ χειρότερη από αυτή του GPS. Αν όμως τα συνδυάσεις, μαζί δίνουν αποδεκτή ποιότητα. Ταυτόχρονα, κάποιες ελλείψεις του ενός εξουδετερώνονται από τις δυνατότητες του άλλου. Υπάρχουν πύργοι GSM σχεδόν παντού, αλλά δεν υπάρχουν δίκτυα Wi-Fi. Ταυτόχρονα, μέσω Wi-Fi η ακρίβεια προσδιορισμού είναι καλύτερη. Επομένως, η συνδυασμένη μέθοδος είναι καλύτερη σε πληρότητα και ακρίβεια από κάθε μέθοδο ξεχωριστά. Ένα λιγότερο γνωστό γεγονός είναι ότι δύο δρομολογητές σε διαφορετικά σημεία της πόλης μπορεί να έχουν την ίδια διεύθυνση MAC. Ο συνδυασμός GSM και Wi-Fi επιλύει τέτοιες συγκρούσεις. Αυτοί οι δρομολογητές πιθανότατα θα έχουν πύργους με διαφορετικά αναγνωριστικά κοντά - άλλωστε, η πιθανότητα σύμπτωσης μέσα σε ένα μπλοκ είναι πολύ μικρότερη από ό,τι σε ολόκληρη την πόλη.

Υπάρχουν πολλές εφαρμογές αυτής της συνδυασμένης μεθόδου γεωπροσδιορισμού στον κόσμο. Και φαίνεται ότι το πρώτο ερώτημα που αντιμετωπίζουν όλοι οι προγραμματιστές είναι πού να λάβουν πληροφορίες σχετικά με τη θέση των δικτύων Wi-Fi και των πύργων κινητής τηλεφωνίας;

Βάση δεδομένων τοποθεσίας δικτύου

Στο δίλημμα «αγορά ή κατασκευή», τελικά επιλέξαμε το δεύτερο. Ο κύριος λόγος είναι ότι με τα δικά σας δεδομένα και αλγόριθμους είναι πολύ πιο εύκολο να ελέγξετε την ποιότητα του αποτελέσματος. Οι χρήστες Mobile Yandex.Maps μας βοήθησαν να συλλέξουμε πληροφορίες.

Όταν ξεκινήσαμε να αναπτύσσουμε το Latitude, υπήρχαν ήδη εκατοντάδες χιλιάδες άνθρωποι στους δρόμους της πόλης με το Yandex.Maps ενεργοποιημένο στα τηλέφωνά τους. Με τη συγκατάθεση του χρήστη, η εφαρμογή μεταδίδει συνεχώς τις συντεταγμένες GPS του - Το Yandex.Traffics χτίζονται με βάση αυτές τις πληροφορίες. Θεωρήσαμε ότι ταυτόχρονα, η εφαρμογή θα μπορούσε να σημειώσει ποιος σταθμός βάσης εξυπηρετεί το τηλέφωνο σε αυτές τις συντεταγμένες, ποια δίκτυα Wi-Fi είναι ορατά (ενώ, φυσικά, δεν συνδέεται στα ίδια τα δίκτυα - για να μην δημιουργηθούν κίνδυνοι απορρήτου ).

Για να συμμετάσχει σε ένα τέτοιο crowdsourcing, ένα άτομο δεν χρειάζεται να κάνει κάτι ιδιαίτερο - απλώς χρησιμοποιήστε την εφαρμογή. Όπως και με τις συντεταγμένες, τα δεδομένα σχετικά με τα γύρω δίκτυα Wi-Fi και τους σταθμούς GSM είναι ανώνυμα. Δεν "ζυγίζουν" σχεδόν τίποτα και η μπαταρία από τη μετάδοσή τους, κατά συνέπεια, δεν εξαντλείται πιο γρήγορα.

Έτσι, οι χρήστες άρχισαν να βοηθούν ο ένας τον άλλον:


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

Η βάση δεδομένων έχει καταρτιστεί και ενημερώνεται τακτικά. Και εδώ βρισκόμαστε αντιμέτωποι με το επόμενο πρόβλημα.

«Κινούμενα» δίκτυα

Η εμπειρία δείχνει ότι τα αναγνωριστικά των πύργων κινητής τηλεφωνίας αλλάζουν συνεχώς - ένας αριθμός που βρισκόταν στο κέντρο της πόλης χθες μπορεί να είναι στα περίχωρα αύριο. Οι δρομολογητές Wi-Fi μπορούν επίσης να μετακινηθούν, μαζί με τους κατόχους τους. Και αποδεικνύεται ότι με κάθε κίνηση πρέπει να ακυρώνετε ένα σημαντικό μέρος των δεδομένων.

Έτσι καταφέραμε να λύσουμε τα προβλήματα με τη μετακίνηση τόσο των πύργων όσο και των δρομολογητών ταυτόχρονα. Ο χρήστης λαμβάνει ένα αίτημα τοποθεσίας μαζί με πληροφορίες σχετικά με τα δίκτυα που μπορεί να δει. Εάν η λίστα των δικτύων περιλαμβάνει ένα που εμφανίστηκε σε διαφορετικά σημεία της πόλης, ο αλγόριθμος λαμβάνει υπόψη πόσα σήματα από αυτό έχουν συσσωρευτεί σε κάθε περιοχή και την ηλικία της τελευταίας. Ονομάζουμε «σύννεφο» κάθε πυκνή συσσώρευση σημάτων από ένα δίκτυο Wi-Fi ή έναν πύργο κινητής τηλεφωνίας. Όσο περισσότερα σήματα υπάρχουν στο cloud και όσο πιο πρόσφατα είναι, τόσο πιο αξιόπιστο είναι. Η απάντηση θα είναι, κατά συνέπεια, η μεγαλύτερη και πιο φρέσκια. Και θεωρούμε ξεπερασμένο ένα σύννεφο στο οποίο δεν υπάρχουν σήματα για περισσότερο από ένα μήνα - ακόμα κι αν δεν έχει εμφανιστεί πιο πρόσφατο σύννεφο για αυτό το δίκτυο σε άλλη περιοχή.

Ακτίνα σύννεφου

Δεδομένου ότι η θέση καθορίζεται κατά προσέγγιση, είναι αδύνατο να εμφανιστεί το σημείο - πρέπει να σχεδιάσετε έναν κύκλο (εξάλλου, το ραδιοφωνικό σήμα, ελλείψει παρεμβολών, κατανέμεται ομοιόμορφα προς όλες τις κατευθύνσεις). Αν και, αν κοιτάξετε την πραγματική εικόνα των σημάτων, τις περισσότερες φορές πρόκειται για έλλειψη. Εξάλλου, οι αυτοκινητιστές χρησιμοποιούν περισσότερο τους χάρτες για κινητά. Τα ίχνη GPS τους παραμένουν στους δρόμους και πρακτικά δεν υπάρχουν σήματα που προέρχονται από αυλές και, ειδικά, από κτίρια.

Για να είναι η απάντηση εξαιρετικά ακριβής, η ακτίνα του κύκλου πρέπει να είναι ελάχιστη. Εάν απλώς σχεδιάσετε έναν κύκλο γύρω από όλα τα σημεία σήματος σε ένα συγκεκριμένο δίκτυο, η ακτίνα θα είναι πολύ μεγάλη. Το Mat βοήθησε στη μείωση του. στατιστική. Η πυκνότητα του σήματος υπόκειται σε κανονική κατανομή, δηλαδή ισχύει ο κανόνας τριών σημάτων. Το 99,7% των σημείων εμπίπτουν σε αυτήν την ακτίνα.

Αποφασίσαμε να προχωρήσουμε παραπέρα και επιλέξαμε πειραματικά έναν συντελεστή σίγμα που ελαχιστοποιούσε την ακτίνα διατηρώντας παράλληλα αποδεκτή ακρίβεια. Αυτό ήταν δυνατό επειδή στις περισσότερες περιπτώσεις ο χρήστης βλέπει πολλά δίκτυα. Δηλαδή, οι περιοχές που «ανοίγονται» από μείωση του συντελεστή πιθανότατα επικαλύπτονται από άλλα σύννεφα.

Σήματα χωρίς σύννεφο

Δυστυχώς, δεν είναι εύκολο να συνδυαστούν όλα τα σήματα GPS από τους χρήστες σε σύννεφα. Αποδείχθηκε ότι εάν επικαλύψετε όλα τα σήματα ενός συγκεκριμένου δικτύου σε έναν χάρτη, εκτός από τις "ελλείψεις" θα υπάρχουν σημεία και γραμμές σε αυτό. Αυτά είναι, κατά συνέπεια, μεμονωμένα σήματα, πολύ μακριά από το σύμπλεγμα σημάτων του ίδιου δικτύου και πολύ μεγάλες διαδρομές GPS (δηλαδή αλυσίδες σημάτων GPS).

Τα "Singles" εμφανίζονται, για παράδειγμα, όταν ένα άτομο ταξιδεύει με το μετρό. Το τηλέφωνο χάνει την επαφή με ένα κινητό σε έναν σταθμό και όταν πηγαίνει σε άλλο, εξακολουθεί να πιστεύει ότι εξυπηρετείται από αυτό το κελί. Ο εντοπιστής φιλτράρει τέτοια σήματα. Επιπλέον, ορίσαμε ένα ελάχιστο όριο για τα σύννεφα για να μην βασιζόμαστε σε πολύ λίγα συμπλέγματα σημάτων.

Τα μεγάλα ίχνη GPS εμφανίζονται, για παράδειγμα, όταν ένα άτομο οδηγεί αυτοκίνητο σε ολόκληρη την πόλη. Το τηλέφωνο «σέρνει» το αναγνωριστικό του πύργου μαζί του από την αρχή της διαδρομής και μεταδίδει ότι υποτίθεται ότι το βλέπει σε όλη τη διαδρομή. Είναι γνωστό ότι οι σταθμοί βάσης έχουν περιορισμένη εμβέλεια, επομένως το Locator φιλτράρει επίσης τέτοια ίχνη GPS. Παραμένουν ίχνη των οποίων το μήκος εμπίπτει στο εύρος δράσης του πύργου. Τείνουν να είναι αισθητά σε περιοχές όπου υπάρχουν λίγα δεδομένα. Εκεί γίνονται μια αλυσίδα από μικρά σύννεφα.

Θεωρούμε μεμονωμένα σήματα, μικρά σύννεφα και μεγάλες διαδρομές ως «θόρυβο». Όταν ο χρήστης βλέπει ένα μεμονωμένο δίκτυο για το οποίο γνωρίζουμε μόνο τέτοια σήματα, λαμβάνει μια απάντηση ότι η τοποθεσία δεν μπορεί να προσδιοριστεί. Αυτό το θεωρούμε πιο σωστό από το να δώσουμε ένα αποτέλεσμα που είναι προφανώς λανθασμένο, σύμφωνα με τις εκτιμήσεις μας.

Όταν συσσωρεύτηκαν λίγα δεδομένα, υπήρχε μια άλλη δυσκολία στο συνδυασμό όλων των σημάτων σε ένα σύννεφο. Συνέβη τα σήματα από έναν πύργο σε μια πόλη να προέρχονται επίσης από μια άλλη. Μας βοήθησε η παρουσία του κωδικού περιοχής τοποθεσίας στα αναγνωριστικά δικτύου GSM - LAC (Location Area Code). Δεδομένου ότι οι πύργοι με τον ίδιο κωδικό πρέπει να βρίσκονται κοντά σύμφωνα με το πρότυπο, το Latitude άρχισε να δίνει υποτιμημένο βάρος στα σύννεφα που ήταν «εκτός της πόλης τους» (δηλαδή ανάμεσα σε σύννεφα με διαφορετικό LAC).

Βελτίωση της ακρίβειας ανίχνευσης...

...μέσω δικτύων GSM
Μια φορά κι έναν καιρό, οι εφαρμογές είχαν πρόσβαση σε πληροφορίες μόνο για έναν σταθμό βάσης, αν και το τηλέφωνο βλέπει συχνότερα αρκετούς. Μετά την εμφάνιση της πλατφόρμας Android, οι εφαρμογές μπόρεσαν να μάθουν να τις βλέπουν όλες (εκτός από τις συνδέσεις στο πρότυπο 3G, το οποίο σας επιτρέπει να αναγνωρίζετε μόνο έναν πύργο κινητής τηλεφωνίας). Η τοποθεσία άρχισε να προσδιορίζεται με μεγαλύτερη ακρίβεια - όχι πλέον από ένα σύννεφο, αλλά από έναν συνδυασμό πολλών. Αποδείχθηκε ότι για πολλά σύννεφα μπορείτε να χρησιμοποιήσετε την ίδια προσέγγιση όπως για ένα. Η ακτίνα υπολογίζεται από την τυπική απόκλιση των σημάτων που περιλαμβάνονται στο σύνολο των νεφών και το κέντρο υπολογίζεται από τον μέσο όρο των συντεταγμένων τους.
…μέσω δικτύων Wi-Fi
Όταν ένα smartphone βρίσκεται εντός εμβέλειας πολλών δικτύων Wi-Fi, μπορεί να αναφέρει όχι μόνο μια λίστα με αυτά, αλλά και την ισχύ του σήματος του καθενός. Χρησιμοποιήσαμε τη γνώση αυτής της δύναμης για να ξεκαθαρίσουμε το κέντρο του κύκλου στον οποίο βρίσκεται ο χρήστης. Αρχίσαμε να προσαρμόζουμε φανταστικά ελατήρια στα κέντρα των παρατηρούμενων νεφών - όσο ισχυρότερο ήταν το σήμα, τόσο πιο σφιχτά ήταν. Και τα ελεύθερα άκρα τους θα πρέπει να συνδέονται. Το σημείο στο οποίο αυτά τα ελατήρια ισορροπούν είναι το εκλεπτυσμένο κέντρο.

Ποιότητα που προκύπτει

Αρχικά, λίγα λόγια για το πώς αξιολογούμε την ποιότητα της λύσης μας. Όπως αναφέρθηκε ήδη, από χρήστες που διαθέτουν μονάδα GPS στις συσκευές τους, το Locator λαμβάνει συντεταγμένες και μια λίστα δικτύων που μπορούν να δουν οι συσκευές. Για να αξιολογήσει την ποιότητα, προσδιορίζει πρώτα μια κατά προσέγγιση τοποθεσία με βάση μόνο αυτά τα δίκτυα. Στη συνέχεια, ελέγχει εάν οι πραγματικές συντεταγμένες από τον χρήστη εμπίπτουν στον κύκλο που έχει αναλάβει το Latitude.

Χρησιμοποιώντας αυτή την τεχνική, λάβαμε τα ακόλουθα σχήματα:

  • για το 83% των αιτημάτων ανά ημέρα, η τοποθεσία καθορίστηκε σωστά - οι συντεταγμένες GPS της συσκευής έπεσαν σε μια περιοχή που ονομάζεται Latitude
  • Το 14% των σημάτων είναι με σφάλμα:
    • 7% - σφάλμα μικρότερο από 100 μέτρα
    • 5,6% - από 100 μέτρα έως αρκετά χιλιόμετρα
    • 1,4% - Ο εντοπιστής έχει λάθος πόλη
  • Το υπόλοιπο 3% των αιτημάτων λαμβάνει απάντηση "Η τοποθεσία δεν βρέθηκε".


Είναι δυνατόν να επιτευχθεί καλύτερη ποιότητα; Ναί. Το πλεονέκτημα της μεθόδου είναι ότι με μια ορισμένη ωριμότητα των αλγορίθμων, είναι απαραίτητο μόνο να συλλεχθούν περισσότερα δεδομένα για να προσδιοριστεί με μεγαλύτερη ακρίβεια η τοποθεσία. Και αυτό είναι αρκετά εύκολο, γιατί τόσο ο αριθμός των δικτύων Wi-Fi όσο και ο αριθμός των χρηστών των εφαρμογών μας αυξάνονται.

Υπάρχουν όμως τεχνολογικά όρια:

  • εάν το τηλέφωνο αναφέρει μόνο έναν πύργο GSM, η ελάχιστη ακτίνα θα είναι αρκετές εκατοντάδες μέτρα στην πόλη και αρκετά χιλιόμετρα έξω από την πόλη
  • εάν το τηλέφωνο βλέπει πολλούς πύργους, το κέντρο μπορεί να προσδιοριστεί με μεγαλύτερη ακρίβεια, αλλά η ακτίνα είναι απίθανο να μειωθεί
  • εάν είναι ορατό ένα δίκτυο Wi-Fi, η ελάχιστη ακτίνα θα είναι 10 μέτρα

Υπολογιστικοί όγκοι

Για να απαντήσετε γρήγορα στον χρήστη, πρέπει να προετοιμάσετε ολόκληρη την απάντηση, ή τουλάχιστον ένα σημαντικό μέρος, εκ των προτέρων. Κάθε βράδυ, ένα σύμπλεγμα που βασίζεται στο κατανεμημένο υπολογιστικό μας σύστημα YAMR συγκεντρώνει σήματα που λαμβάνονται μέχρι χθες, λαμβάνοντας «σύννεφα» έτοιμα για απόκριση. Τη στιγμή της αίτησης, το μόνο που μένει στον Εντοπιστή είναι να τα συνδυάσει με τον σωστό τρόπο. Έτσι, terabyte «ακατέργαστων σημάτων» συμπιέστηκαν σε 1,5-2 GB έτοιμων αποκρίσεων, που χωρούν εύκολα στη μνήμη. Και η προετοιμασία μιας απάντησης διαρκεί σχεδόν πάντα 1 ms και κάθε διακομιστής στο σύμπλεγμα μπορεί να χειριστεί 10 χιλιάδες RPS.

Και για να μην αυξάνεται γραμμικά η διάρκεια του ημερήσιου υπολογισμού με την αύξηση της ιστορίας των σημάτων GPS, έχουμε πετύχει «προσθετικότητα» των σύννεφων. Τώρα αρκεί να αποθηκεύσετε μόνο μερικούς δείκτες για κάθε σύννεφο και δεν χρειάζεται να επεξεργάζεστε ξανά ολόκληρη την παλιά ιστορία κάθε μέρα.

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

Ανάλογα

Οι υπηρεσίες τοποθεσίας χωρίς GPS, όπως έχουμε ήδη πει, δεν είναι διαθέσιμες μόνο από το Yandex. Οι προγραμματιστές μπορούν να απευθυνθούν σε έναν εμπορικό πάροχο (όπως το Altergeo στη Ρωσία και το Skyhook Wireless στον κόσμο) ή να χρησιμοποιήσουν την πλατφόρμα για κινητά ή το API του προγράμματος περιήγησης.

Γενικά, μπορείτε να συλλέξετε μια τέτοια βάση δεδομένων με τρεις τρόπους:

  • μετακινείστε σε πόλεις ενδιαφέροντος με αυτοκίνητο, σαρώνοντας δίκτυα και, στη συνέχεια, περιηγείστε ξανά περιοδικά για ενημέρωση της βάσης δεδομένων
  • δημιουργήστε μια μαζική εφαρμογή για κινητά (για παράδειγμα, Yandex.Maps)
  • δημιουργήστε μια πλατφόρμα για κινητά (για παράδειγμα, iOS ή Android)
Αλλά μόνο ο προγραμματιστής μιας εφαρμογής που βασίζεται στην τοποθεσία πρέπει να επιλέξει μεταξύ διαφορετικών λύσεων και ο χρήστης «ζει» με αυτήν την επιλογή. Ελλείψει μιας ενοποιημένης μεθοδολογίας σύγκρισης, πρέπει να δώσετε προσοχή στην ακρίβεια του προσδιορισμού (η ακτίνα «ανοχής» και το ποσοστό σφαλμάτων) στις περιοχές ενδιαφέροντος. Προσθέστε ετικέτες

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

ΠΡΟΕΙΔΟΠΟΙΗΣΗ

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

ΕΙΣΑΓΩΓΗ

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

Περίπτωση χρήσης 1. «Θα σε βρω με IP»

Ας υποθέσουμε ότι υπάρχει ένα τρολ στο ιστολόγιό σας που αφήνει τακτικά αγενή σχόλια. Εάν συλλέγετε πληροφορίες σχετικά με επισκέπτες χρησιμοποιώντας το Yandex.Locator, μπορείτε εύκολα να μάθετε ότι αυτός ο άνθρωπος βρίσκεται στο ανατολικό άκρο της οδού Λένιν, όπου ζει ένας δυσάρεστος τύπος από το πανεπιστήμιό σας. Και αν είστε τυχεροί, τότε κάνοντας ένα αίτημα στο Vkontakte API, θα βρείτε την τελευταία του φωτογραφία.

Περίπτωση χρήσης 2. Γεωμάρκετινγκ

Το Yandex.Direct χρησιμοποιεί ακριβή γεωγραφική στόχευση για τις διαφημίσεις του εδώ και πολύ καιρό. Η συνείδηση ​​αγνοεί την ανακοίνωση «Αλυσίδα πιτσαριών στη Μόσχα». Και είναι σχεδόν αδύνατο να περάσετε από τη σύνδεση "Pizza Rochdelskaya street building 14" (απέναντι από εσάς).
Μπορείτε να χρησιμοποιήσετε γεωδεδομένα για την προώθηση αγαθών και υπηρεσιών. Εάν ένα άτομο αισθάνεται αυτήν τη στιγμή τις επιπτώσεις της χαμηλής ατμοσφαιρικής πίεσης, τότε υπάρχει πιθανότητα να θέλει να αγοράσει χάπια για να αυξήσει τη ζωτικότητα.

Περίπτωση χρήσης 3. Διασκεδαστική λειτουργικότητα

Υπάρχει τεράστιο περιθώριο δημιουργικότητας εδώ. Βάζουμε ένα θέμα "νύχτα" στον ιστότοπο μετά τη δύση του ηλίου του χρήστη. Του δείχνουμε τις τελευταίες selfies κοριτσιών που τραβήχτηκαν σε απόσταση 10 χιλιομέτρων από αυτόν. Με βάση το κλίμα και το βάθος των ταμιευτήρων, προσδιορίζουμε τι είδους ψάρι βρίσκεται στην περιοχή. Υπάρχουν πολλές επιλογές.

Περίπτωση χρήσης 4. «Επιστημονική» έρευνα κοινού

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

Ενδιαφέρων? Τότε προχωρήστε.

Λήψη συντεταγμένων

Τα δεδομένα GPS μπορούν να ληφθούν χρησιμοποιώντας JavaScript και HTML5 Geolocation API. Έχετε όμως υπόψη σας: μπορείτε να μάθετε την ακριβή τοποθεσία του χρήστη μόνο με τη συγκατάθεσή του. Πρέπει να το εκφράσει απαντώντας ναι στην ερώτηση του αναδυόμενου παραθύρου εάν θα επιτρέψει στον τρέχοντα ιστότοπο να γνωρίζει την τοποθεσία του.

Παράδειγμα κώδικα σε εγγενές JS:

// Βάλτε τη διεύθυνση στη μεταβλητή

για εμφάνιση κειμένου var postText = document.getElementById("positionText"); συνάρτηση getLocation() ( if (navigator.geolocation) ( // Εάν ο χρήστης το έχει επιτρέψει, προσδιορίζουμε την τοποθεσία του και επεξεργαζόμαστε την τιμή που προκύπτει χρησιμοποιώντας τη συνάρτηση ShowPosition navigator.geolocation.getCurrentPosition(showPosition); ) αλλιώς ( // Εάν όχι, εμφάνιση μηνύματος σφάλματος postText.innerHTML = "Αυτό το πρόγραμμα περιήγησης δεν μπορεί να προσδιορίσει την τοποθεσία" ) ) λειτουργία showPosition(position) ( // Εμφάνιση γεωγραφικού πλάτους και μήκους στη σελίδα postText.innerHTML = "Latitude: " + position.coords.latitude + ";
Γεωγραφικό μήκος: " + position.coords.longitude; )

Yandex.Locator

Εάν ο χρήστης δεν θέλει να μοιραστεί οικειοθελώς πληροφορίες GPS, τότε δεν χάνονται όλα. Υπάρχει ένα δροσερό εργαλείο που ονομάζεται Yandex.Locator. Η μέση ακρίβεια ανίχνευσης είναι 300 m Υπολογίζει πού βρίσκεται ένα άτομο με βάση τις ακόλουθες πληροφορίες:

  • σήματα δικτύου κινητής τηλεφωνίας.
  • Σήματα δικτύου πρόσβασης Wi-Fi.
  • Διεύθυνση IP της κινητής συσκευής.

Είναι πολύ πιο δύσκολο να εφαρμοστεί σε ένα έργο από το HTML5 Geolocation API. Πριν στείλετε ένα αίτημα στο Yandex.Locator API, ένας ιστότοπος ή μια εφαρμογή για κινητά πρέπει να αποκτήσει ένα κλειδί πρόσβασης και να ανακαλύψει πολλές λεπτομέρειες για τον χρήστη. Εάν ένας επισκέπτης σερφάρει στο Διαδίκτυο μέσω σύνδεσης κινητής τηλεφωνίας, τότε πρέπει να γνωρίζετε το αναγνωριστικό κυψέλης και την ισχύ του σήματος, εάν μέσω Wi-Fi, την ισχύ του σήματος και τη διεύθυνση MAC του σημείου πρόσβασης.

Για ακριβείς οδηγίες σας παραπέμπουμε στον οδηγό προγραμματιστή.

Exif δεδομένα φωτογραφιών

Μπορείτε επίσης να βρείτε συντεταγμένες GPS στα μεταδεδομένα των φωτογραφιών που τραβήχτηκαν με ψηφιακή φωτογραφική μηχανή. Πληροφορίες σχετικά με φωτογραφίες μπορούν να διαβαστούν χωρίς τη συγκατάθεση του χρήστη. Απλά πρέπει να τον αναγκάσετε να τα κατεβάσει. Στη συνέχεια, η βιβλιοθήκη exif-js ή τα εργαλεία διακομιστή για την ανάγνωση δεδομένων exif έρχονται στη διάσωση:

  • Η PHP έχει μια ενσωματωμένη συνάρτηση read_exif_data();
  • Υπάρχει μια βιβλιοθήκη για τη Ruby που ονομάζεται exifr.
  • Η Python έχει το πακέτο ExifRead 2.0.
  • για C++ - easyexif .

Βάση δεδομένων GeoIP

Μπορείτε να προσπαθήσετε να βρείτε τη διεύθυνση IP του χρήστη στη βάση δεδομένων GeoIP, αλλά αυτό είναι καθαρή χειρομαντεία. Ακριβό και ξεπερασμένο. Από την εμπειρία μου, αυτή η βάση δεδομένων είναι γεμάτη ανακρίβειες και δεν είναι αξιόπιστη. Και το ποσοστό των ατόμων που χρησιμοποιούν VPN είναι αρκετά σημαντικό.

Σύνταξη φακέλου

Έχοντας λάβει τις γεωγραφικές συντεταγμένες στα χέρια μας, θα αρχίσουμε να συλλέγουμε πληροφορίες. Για κάθε στοιχείο, θα υποβάλουμε ένα αίτημα με παραμέτρους σε ένα από τα API και θα αναλύσουμε την επιστρεφόμενη απόκριση XML/JSON.

Αρχικά, ανακαλύπτουμε τη διεύθυνση του χρήστη στο δρόμο.

Μάθετε τη διεύθυνση του χρήστη

Αυτό μπορεί να γίνει με το Yandex.Geocoder (μπορείτε να εργαστείτε με αυτό χωρίς προηγούμενη εξουσιοδότηση OAuth).

Αίτημα σύνταξης:

Http://geocode-maps.yandex.ru/1.x/?geocode=36.3630,56.0000

Είναι απλό. Το αίτημα έχει περάσει δύο παραμέτρους: γεωγραφικό πλάτος (56.0000) και γεωγραφικό μήκος (36.3630).

Ο διακομιστής θα παρέχει μια απάντηση σε μορφή XML (δείτε στιγμιότυπο οθόνης). Μας ενδιαφέρουν τα ακόλουθα πεδία:

  • AdressDetails->Country->AdressLine - συμβολοσειρά κειμένου με την πλήρη διεύθυνση του χρήστη.
  • Στοιχεία Διεύθυνσης->Χώρα->Όνομα χώρας - χώρα;
  • Λεπτομέρειες Διεύθυνσης->ΔιαχειριστικήΠεριοχή->ΔιαχειριστικήΠεριοχήΌνομα - περιοχή;
  • Στοιχεία Διεύθυνσης->SubAdministrativeArea->SubAdministrativeAreaName - περιοχή;
  • Στοιχεία Διεύθυνσης->Τοποθεσία->Όνομα τοποθεσίας - τοποθεσία;
  • Λεπτομέρειες Διεύθυνσης->ThoroughFare->ThoroughFareName - οδός.

Το Yandex.Geocoder δεν αποκαλύπτει τη διεύθυνση με τον αριθμό του σπιτιού. Αλλά αν βάλετε λίγο το μυαλό σας και θυμηθείτε το σχολικό πρόγραμμα, μπορείτε να το καταλάβετε. Υπάρχουν 111 χλμ. σε μία μοίρα γεωγραφικού πλάτους Με το γεωγραφικό μήκος, όλα είναι λίγο πιο περίπλοκα. Εξάλλου, η διάμετρος της Γης ποικίλλει ανάλογα με το γεωγραφικό πλάτος. Επομένως, το γεωγραφικό μήκος υπολογίζεται χρησιμοποιώντας τον ακόλουθο τύπο (6371 είναι η ακτίνα της Γης):

6371 * (Μαθηματικά::PI/180) * cos(γεωγραφικό πλάτος * Μαθηματικά::PI/180)

Πώς αυτή η γνώση θα βοηθήσει στον υπολογισμό της ακριβούς διεύθυνσης του χρήστη; Ετσι:

  1. Ας μάθουμε την οδό χρησιμοποιώντας το Yandex.Geocoder.
  2. Στέλνουμε ένα αίτημα για να λάβουμε τις ακριβείς γεωγραφικές συντεταγμένες ενός σπιτιού σε αυτόν τον δρόμο:
    http://geocode-maps.yandex.ru/1.x/?geocode=Perm, οδός Yablochkova, 2
  3. Διαβάζουμε την τιμή από την απάντηση διακομιστή.
  4. Γνωρίζοντας το μήκος μιας μοίρας γεωγραφικού πλάτους και μήκους, υπολογίζουμε την απόσταση από το επιθυμητό σημείο σε αυτό το σπίτι.
  5. Ανοίξτε το Yandex.Maps και χρησιμοποιήστε έναν χάρακα για να υπολογίσετε ποιο σπίτι έχει τις γεωγραφικές συντεταγμένες του χρήστη.

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

Google Street View

Μπορείτε να βρείτε τις συντεταγμένες στους Χάρτες Google και να ενεργοποιήσετε το Street View. Είναι αστείο να κοιτάς το σπίτι ή το γραφείο ενός ατόμου που επικρίνει κατάφωρα τις φωτογραφίες μιας πρόσφατα ανακαινισμένης ντάκας στο ιστολόγιό σου.

Φωτογραφίες τριγύρω

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

https://api.vk.com/method/photos.search.xml?lat=38.600000&long=35&count=100&radius=500

  • lat - γεωγραφικό πλάτος?
  • μακρύ - γεωγραφικό μήκος?
  • καταμέτρηση - αριθμός φωτογραφιών που επιστράφηκαν από το αίτημα.
  • ακτίνα - η ακτίνα ενός κύκλου γύρω από ένα δεδομένο σημείο στο οποίο πρέπει να ληφθούν φωτογραφίες.

Ακολουθούν τα πεδία απόκρισης που μας ενδιαφέρουν:

  • src, src_big - σύνδεσμοι προς φωτογραφίες.
  • δημιουργία - ημερομηνία δημιουργίας της φωτογραφίας σε unixtimestamp.
  • owner_id - Αναγνωριστικό του κατόχου της φωτογραφίας.

Γνωρίζοντας το αναγνωριστικό του κατόχου, μπορείτε να μεταβείτε στη σελίδα του ή να συλλέξετε πληροφορίες χρησιμοποιώντας το ίδιο VK API:

Https://api.vk.com/method/getProfiles.xml?uids=111111&fields=last_name,first_name, φύλο, ηλικία

  • uids - αναγνωριστικά κατόχων διαχωρισμένα με κόμμα.
  • πεδία - πεδία που θέλουμε να λαμβάνουμε στην απάντηση.

Πλήρης λίστα πεδίων

Η Yandex ανακοίνωσε το άνοιγμα της διεπαφής προγράμματος (API) για την υπηρεσία γεωτοποθέτησης Yandex.Locator. Το API έγινε διαθέσιμο σε τρίτους προγραμματιστές σε δοκιμαστική λειτουργία στις 25 Φεβρουαρίου 2011. Το έργο μπορεί να βγει από το στάδιο δοκιμής "σε λίγους μήνες".

Σύμφωνα με το Yandex, το API σάς επιτρέπει να προσδιορίσετε τη θέση των κινητών τηλεφώνων ή των φορητών υπολογιστών που δεν διαθέτουν δικό τους δέκτη GPS, γεγονός που ανοίγει τη δυνατότητα στους προγραμματιστές να δημιουργήσουν υπηρεσίες και εφαρμογές με βάση την ιδέα της γεωγραφικής τοποθέτησης. Παραδείγματα τέτοιων προγραμμάτων στο Yandex περιλαμβάνουν την προσθήκη γεωγραφικής ετικέτας σε φωτογραφίες ή μηνύματα που δημοσιεύονται στα κοινωνικά δίκτυα ή στο Twitter.

Η εργασία του γεωγραφικού API Yandex, όπως και παρόμοιες λύσεις, βασίζεται στη χρήση δεδομένων σχετικά με τη θέση των κοντινών σταθμών βάσης κινητής τηλεφωνίας και των σημείων πρόσβασης Wi-Fi.

Το εργαλείο, σύμφωνα με τον Oleg Gerasimov, επικεφαλής του τμήματος ανάπτυξης υπηρεσιών κινητής τηλεφωνίας Yandex, χρησιμοποιείται πλέον σε πολλά από τα προϊόντα της μηχανής αναζήτησης (κινητά Yandex.Maps, Yandex για κινητά και Yandex.Bar για Firefox και Internet Explorer). Δεν υπάρχουν ακόμη έργα τρίτων που να βασίζονται στο γεωγραφικό API του Yandex, αλλά όταν εμφανιστούν, το Yandex θα μπορεί να προσθέσει ένα κοινό τρίτων χρηστών εφαρμογών στις γνώσεις του για την τοποθεσία των χρηστών Yandex.Maps.

Στη συμφωνία χρήστη, η Yandex προειδοποιεί τους χρήστες API—προγραμματιστές εφαρμογών—ότι «προϋπόθεση για τη χρήση της υπηρεσίας σε εφαρμογές για κινητές συσκευές είναι η μεταφορά ιχνών GPS (δεδομένα σχετικά με τις κινήσεις του χρήστη)» στη Yandex. Εάν μια εφαρμογή κάνει περισσότερα από 1.000 αιτήματα την ημέρα, αυτή η προϋπόθεση γίνεται ευθύνη του προγραμματιστή της.

Στον Οδηγό προγραμματιστών για το Latitude, η Yandex αποκαλεί τον εντοπισμό θέσης βάσει σημάτων από σημεία πρόσβασης Wi-Fi την πιο ακριβή μέθοδο. Σε αυτή την περίπτωση, η θέση της κινητής συσκευής μπορεί να προσδιοριστεί με ακρίβεια έως και 150 μέτρα.

Το ίδιο έγγραφο σημειώνει ότι η τοποθέτηση με χρήση κυψελωτών σταθμών βάσης εξαρτάται από την πυκνότητά τους: στο κέντρο των πόλεων, όπου βρίσκονται με μέγιστη πυκνότητα, μπορεί να είναι 200-500 μέτρα, στα περίχωρα - 1,5-2 χιλιάδες μέτρα.

Είναι ενδιαφέρον ότι το 2010, ο ανταγωνιστής Google της Yandex θεωρήθηκε υπερβολικά φιλελεύθερος με τα δίκτυα Wi-Fi άλλων ανθρώπων, όταν σε αρκετές χώρες στην Ασία, την Αμερική και την Ευρώπη, αυτοκίνητα Google Street View συνελήφθησαν να συλλέγουν κίνηση από ανοιχτά ασύρματα δίκτυα.

Ο Oleg Gerasimov εξήγησε στο CNews ότι, σε αντίθεση με την Yandex, η οποία χρησιμοποιεί μόνο το αναγνωριστικό σημείου πρόσβασης στο geotoolkit της, η Google σάρωνε όλες τις πληροφορίες που μεταδίδονταν μέσω ανοιχτών δικτύων, κάτι που δεν πρόκειται να κάνει η Yandex. Αν και τα περισσότερα ιδιωτικά δίκτυα χρησιμοποιούν πρωτόκολλα κρυπτογράφησης, τα αναγνωριστικά τους μεταδίδονται ανοιχτά, κάτι που είναι αρκετά αρκετό για σκοπούς εντοπισμού θέσης, λέει η Yandex.

Οι άμεσοι ανταγωνιστές της Google και Mail.ru διαθέτουν εργαλεία εντοπισμού θέσης παρόμοια με του Yandex. Η υπηρεσία Google Latitude (που εντοπίζεται στη Ρωσία ως "Google Latitude") έχει ανοιχτό API και χρησιμοποιείται ευρέως σε διάφορες υπηρεσίες και εφαρμογές Ιστού.