Suite

Problème de géorepérage (Quitter/Entrer le timing de géorepérage) ?

Problème de géorepérage (Quitter/Entrer le timing de géorepérage) ?


Je recherche déjà SE si la question a déjà été soulevée mais je n'en trouve pas, donc je vais quand même poser la question ici. Je crée une petite application qui implique le géorepérage. Mon appareil GPS n'a pas de capacité de géorepérage à lui seul et j'espère qu'il possède cette fonctionnalité pour la précision et la facilité de programmation.

Je n'ai pas le choix de le faire au niveau du serveur, ma question est puisque mon appareil envoie NMEA/GPRMC à un intervalle de deux minutes. Existe-t-il un algorithme que nous pouvons utiliser pour détecter l'heure exacte à laquelle le véhicule quitte ou entre dans la barrière géographique ?

mon code actuel peut détecter le véhicule à l'intérieur/à l'extérieur de la zone de clôture géographique, quel que soit le type de polygone, c'est juste le problème de synchronisation que je ne peux pas résoudre.


Je doute que vous puissiez le faire de manière déterministe. Votre seule option serait de prédire un avenir proche en fonction de nombreux autres facteurs. par exemple:

  1. historique des mouvements de votre objet
  2. état du réseau routier
  3. circulation

En fait, cela a un domaine de recherche très chaud.

Cependant, l'estimation ne sera toujours pas probable à 100%. Considérez une situation comme celle-ci :

La voiture dans les prochaines minutes peut aller dans n'importe quelle direction à l'intersection. Je ne peux donc pas dire qu'il entrera absolument dans mon polygone de géorepérage.

Par conséquent, pour réduire l'erreur de temps pour le géofencing, vous devez réduire la fréquence de collecte des données GPS.


Après avoir implémenté quelque chose de similaire dans postgres, je vais partager ce qui a été implémenté de notre côté. L'objectif était de détecter quand un dispositif de suivi entre dans une barrière géographique, combien de temps il reste à l'intérieur et quand il sort de la barrière géographique.

Puisque vous avez déjà un système pour définir le polygone et vérifier si la position actuelle est à l'intérieur ou à l'extérieur, je vais passer à la section chronométrage.

Considérons 3 états, entrée, logement et sortie. Cela pourrait être 0,1,2. Chaque fois que le point est à l'intérieur du polygone, l'état devra être enregistré quelque part. Je ne sais pas quel type d'appareil GPS vous utilisez, cela peut être implémenté à l'aide de fichiers, en mémoire vive (si vous avez beaucoup de RAM ofc) ou d'une petite base de données en interne si vous en avez la possibilité.

Considérant 2 tables, la 1ère pour contenir les interactions et la 2ème pour contenir les états.

Premier à organiser des interactions

ID | ID appareil | IDpolygone | état | horodatage

Deuxième exemple pour contenir les états

ID | ID appareil | IDpolygone | horodatage_entrée | exit_timestamp | durée_habitation

Logique

Pour chaque point de localisation, vous devrez demander si le point se trouve à l'intérieur d'un polygone et traiter les données par polygone renvoyé.

  • La lat,lon actuelle de l'appareil est-elle à l'intérieur d'un polygone ?

    • Non : la lat,lon précédente est-elle à l'intérieur d'un polygone ?

      • Oui : insérer la sortie avec l'horodatage (état 2)
      • Non : Continuer jusqu'à la fin de la boucle
    • Oui : interroger à nouveau le point s'il a déjà eu une interaction

      • Oui : Étant donné que le point a une interaction plus tôt, l'appareil semble être à l'intérieur du logement de la clôture géographique. Faites une insertion dans votre base de données pour enregistrer l'instance en tant qu'état 1
      • Non : Puisque le point n'a pas d'interaction plus tôt, l'appareil semble entrer dans la barrière géographique pour la 1ère fois. Faites une insertion dans votre base de données pour enregistrer l'instance en tant qu'état 0.

Une fois l'interaction terminée, vous obtiendrez des données un peu comme celle-ci

ID | ID de l'appareil | IDpolygone | état | horodatage

  1. -----1-----| -----1------ | ---0----| 1548132074
  2. -----1-----| -----1------ | ---1----| 1548142074
  3. -----1-----| -----1------ | ---1----| 1548152074
  4. -----1-----| -----1------ | ---1----| 1548162074
  5. -----1-----| -----1------ | ---2----| 1548172074

À partir de ce qui précède, id-1 a votre horodatage d'entrée, id-5 a votre horodatage de sortie et vous pouvez calculer la durée de votre logement de l'horodatage id-1 jusqu'à l'horodatage id-5.

Cela dépend de la précision de l'appareil GPS, pour les erreurs GPS, un système de filtrage devra être mis en œuvre dans l'algorithme lui-même.

J'espère que ça aide.


Voir la vidéo: iPad Adding Geofence