Je pense à écrire un logiciel pour gérer les traces GPS et les waypoints (principalement stocker, afficher et calculer des mesures telles que la vitesse, la note et quelques statistiques simples).
Je me demande quel devrait être le modèle de données le plus robuste sur le plan conceptuel concernant les points de cheminement, et voici quelques "candidats":
En considérant les pistes comme des séquences de Trackpoints:
1.1. Les pistes sont considérées comme "2D", car les projections cartographiques sont 2D. Les points de suivi peuvent ou non avoir une élévation, peuvent ou non avoir un horodatage. L'élévation et l'horodatage sont considérés comme des "extras", "facultatifs". Pour les applications terrestres, l'élévation est une fonction directe du lat / lon (pouvant être obtenue via DEM);
1.2. Les pistes sont considérées comme "3D" car l'espace géographique est, en effet, 3D, et la trajectoire du récepteur est 3D (la projection 2D est donc une forme de réduction des données). L'horodatage peut ou non être présent (la piste aurait pu être dessinée à la main).
1.3. Les pistes sont considérées comme "4D" (3 spatiales + temporelles). Ainsi, une carte dessinée à la main est un cas spécial où l'élévation et l'horodatage sont
null
ou non présents, mais les propriétés de Trackpoint sont toujours "là".Les pistes sont considérées comme des dictionnaires de flux, où tous les flux ont des longueurs égales. Il y a une liste de latitudes, une liste de longitudes, une liste d'élévations, une des horodatages, etc. Cela facilite le calcul des statistiques de chaque propriété, et le concept de Trackpoint devient "virtuel" dans un sens, car c'est un coupe transversale de nombreux cours d'eau.
Si j'ai bien compris, le format GPX adopte 1.1., KML adopte 1.2. (sans prise en charge de l'horodatage), et l'API Strava en adopte 2. (au format JSON), mais à la fin ce ne sont que des formats FILE pour la sérialisation et le stockage, pas nécessairement pour la modélisation, la représentation informatique et le calcul des nombres.
Existe-t-il une forme préférable, dans un sens orienté objet, et pourquoi? (Je crois qu'au moins un typage fort et une modélisation sensible éviteraient des opérations qui n'ont pas de sens).
EDIT: quelques questions supplémentaires "intrigantes":
- Une piste dessinée à la main est-elle CONCEPTUELLEMENT la même chose qu'un tracklog enregistré par un périphérique? Doivent-ils être de différents types de données?
- Doit-on considérer comme "correct" que KML stocke les élévations nulles à zéro? Le zéro EST une élévation, et si vous ne connaissez pas l'élévation, vous ne devriez pas lui attribuer un zéro numérique, n'est-ce pas?
- Faut-il compter, dans une piste avec élévation, si l'altitude est extraite des données DEM ("hors ligne") ou des données GPS ou barométriques ("sur le terrain")? Doit-il être signalé dans l'objet Track? Enregistré dans différentes propriétés de Trackpoint? Ignoré? Doit-il s'agir de types de données de collection différents?
- Si je modifie une piste enregistrée par un appareil dans un éditeur de carte (ajout, déplacement et suppression de points), ou si je combine des pistes de différentes dates, comment les horodatages des points de trace doivent-ils être traités? Doivent-ils être "remis à zéro" à null? Un objet (collection de points de cheminement) d'un type différent doit-il être créé à partir des anciens?
<>
et{}
pour vous aider à organiser vos données - et métadonnées - vous le faites mal.