web-dev-qa-db-fra.com

Combien de chiffres significatifs dois-je stocker dans ma base de données pour une coordonnée GPS?

J'ai dans ma base de données MySQL les coordonnées de longitude et de latitude (données GPS).

Il est actuellement stocké sous:

column     type
------------------------
geolat     decimal(10,6)
geolng     decimal(10,6)

Question: Ai-je vraiment besoin d'un type de données aussi grand que decimal(10,6) pour stocker correctement les données de coordonnées?

Depuis que j'ai un index combiné sur la longitude et la latitude, la taille de cet index est énorme. Si je pouvais le réduire sans rien compromettre, ce serait formidable.

38
teddyk

WGS84 datum sont généralement donnés comme coordonnées dans une notation entièrement décimale, généralement avec 5 décimales. Ainsi, pour la latitude (-90 à +90), vous pouvez utiliser décimal (7, 5) (-90.00000 à 90.00000) vous pouvez utiliser la longitude décimale (8, 5) (-180.00000 à 180.00000).

.00001 donne une précision d'environ un mètre à l'équateur

Le type de données DECIMAL/NUMERIC est un entier échelonné à précision fixe et les parties positives et négatives de la plage sont toujours disponibles - elles n’affectent pas la précision ou l’échelle (il est évident que de la mémoire est nécessaire, mais ne pas avoir le choix à ce sujet pour DECIMAL)

35
Cade Roux

J'ai toujours travaillé avec six chiffres après la décimale. Auparavant, je travaillais dans le secteur des SIG en vertu d’un contrat militaire et c’était suffisant.

4
Steve Elmer

Gardez à l'esprit qu'il est plus facile de réduire les données que d'augmenter les données. Généralement, il n’est même pas possible d’augmenter la précision des données sans une nouvelle mesure. Et le remesurage a un coût. Ne connaissant rien de votre situation ni de l'industrie, je dirais qu'il faut capturer autant de données/spécificités que possible.

Les données que vous utilisez réellement peuvent être extraites de cet ensemble. Si vous finissez par avoir besoin d'un degré de spécificité plus élevé, vous pouvez toujours recalculer sans recalculer.

De plus, je ne suis pas sûr que l'indexation des données brutes soit la meilleure chose à faire car il ne s'agit pas d'un ensemble d'éléments discret. Créer un tableau de points de données moins précis/plus petits rendrait les index beaucoup plus petits.

3
Mark Canlas

si c'est pour l'immobilier avez-vous vraiment tellement de maisons que 2 octets économisés par ligne vont être perceptibles? Je garderais autant de précision que possible à moins qu'il y ait une bonne raison de ne pas le faire.

1
jk.

La sentance GGA normale dans une sortie NMEA Lat/lon n’est que de 3 décimales, ce qui correspond à une résolution d’environ 10 m à l’équateur. Certaines marques ajoutent un chiffre supplémentaire personnalisé pour donner 1m.

4 digit deg.mm mm/1000 est également commun.

Si vous utilisez le RTK-GPS haute précision, vous aurez peut-être besoin de plus d'endroits pour obtenir une précision en mm.

0
Martin Beckett

Cela dépend de la précision de votre localisation. Évidemment, plus les résultats sont grands, plus les résultats sont précis et petits. Je suggère de garder vos valeurs plus grandes, car il ne s'agit pas vraiment de beaucoup de données de toute façon.

0
Sampson

Si toutes les coordonnées se trouvent dans une zone spécifique, fixez un point central (c'est-à-dire la moyenne des points actuels et arrondissez pour obtenir un chiffre que vous pouvez dire à haute voix), puis stockez les coordonnées comme relatives à ce point. De cette façon, vous pouvez probablement sauter les 2 à 4 premiers chiffres les plus significatifs, ce qui vous permet de faire de grosses économies. Mais souvenez-vous de manipuler ces données uniquement via une classe ou une vue qui restitue de véritables coordonnées WGS84.

0
Simon B.

Vous pouvez également essayer de stocker (et/ou de travailler avec) vos coordonnées dans différentes unités. Un projet sur lequel j'ai travaillé, toutes nos coordonnées étaient en milliarcsecondes stockées au long (peut-être ints, cela fait quelques années). Cela a été fait en partie pour la vitesse et l'espace de stockage (il s'agissait d'un système intégré). Mais la même logique pourrait s’appliquer ici.

0
miko