121 votes

Comment exactement dois-je conserver la latitude et la longitude?

Je lisais cette question ici:

Quel type de données à utiliser lors de l'entreposage de latitude et de longitude données dans les bases de données SQL?

Et il semble que le consensus général est que l'utilisation de Décimales(9,6) est le chemin à parcourir. La question est pour moi, de façon exacte ai-je vraiment besoin?

Par exemple, l'API Google renvoie un résultat comme:

"lat": 37.4219720,
"lng": -122.0841430

De -122.0841430, combien de chiffres dont j'ai besoin? J'ai lu plusieurs guides, mais je ne peux pas faire assez de sens pour le comprendre.

Pour être plus précis dans ma question: Si je veux être précis à moins de 50 pieds de l'emplacement exact, combien de points décimaux dois-je les conserver?

Peut-être une meilleure question serait en fait une non-programmation de la question, mais il serait plus exact de chaque point décimal de vous donner?

C'est ce simple?

  1. Élément de la liste
  2. x00 = 6000 km
  3. xx0 = 600 miles
  4. xxx = 60 km
  5. xxx.x = 6 miles
  6. xxx.xx = .6 km
  7. etc?

214voto

noushy Points 923

L'exactitude versus nombre de décimales à l'équateur

decimal  degrees    distance
places
-------------------------------  
0        1.0        111 km
1        0.1        11.1 km
2        0.01       1.11 km
3        0.001      111 m
4        0.0001     11.1 m
5        0.00001    1.11 m
6        0.000001   0.111 m
7        0.0000001  1.11 cm
8        0.00000001 1.11 mm

ref : http://en.wikipedia.org/wiki/Decimal_degrees#Accuracy

20voto

Gustav Points 1314
+----------------+-------------+
|    Decimals    |  Precision  |
+----------------+-------------+
|    5           |  1m         |
|    4           |  11m        |
|    3           |  111m       |
+----------------+-------------+

Si vous voulez de 50 pieds de précision aller de 4 chiffres. Donc, decimal(9,6)

19voto

Greg Points 41

J'ai de la conception des bases de données et ont étudié cette question pendant un moment. Nous utilisons une série d'application avec un serveur Oracle principal où les champs de données ont été définis pour permettre le 17 décimales. Ridicule! C'est en millièmes de pouce. Pas de GPS dans le monde entier est exacte. Donc, il faut mettre de côté 17 décimales et de traiter avec la pratique. Le Gouvernement assure que leur système est bon pour "un "pire des cas" pseudorange exactitude de 7,8 mètres à un niveau de confiance 95% de" mais puis revient à dire que l'effectif de la FAA (à l'aide de leurs instruments de haute qualité) a montré les coordonnées GPS pour être généralement bonne à moins d'un mètre.

Donc, vous avez à vous poser deux questions: 1) Quelle est la source de vos valeurs? 2) Quelles seront les données seront-elles utilisées?

Les téléphones cellulaires ne sont pas particulièrement précis, et Google/MapQuest lectures sont probablement seulement bon à 4 ou 5 décimales. Une haute qualité de l'instrument GPS peut vous 6 (aux États-unis). Mais la capture de plus de qui est un gaspillage de frappe et de l'espace de stockage. En outre, si la recherche se fait sur les valeurs, c'est bien pour un utilisateur de savoir que 6 serait le plus il/elle doit rechercher (évidemment toute recherche de valeur entrée doit d'abord être arrondi à la même précision que les données de la valeur recherchée).

En outre, si tout ce que vous allez faire est de consulter un emplacement dans Google Maps ou le mettre dans un GPS pour s'y rendre, quatre ou cinq, c'est beaucoup.

Je dois rire les gens autour d'ici la saisie de tous ces chiffres. Et où exactement sont-ils prendre cette mesure? Avant bouton de porte? Boîte aux lettres à l'avant? Centre de bâtiment? En haut de la tour de téléphonie cellulaire? ET... tout le monde est constamment pris à la même place?

Comme une bonne conception de base de données, je voudrais accepter des valeurs à partir d'un utilisateur pour peut-être un peu plus de cinq chiffres après la virgule, puis autour de capture et de seulement cinq pour des raisons de cohérence [peut-être six si vos instruments sont bons et la fin de votre utilisation de bons de souscription].

11voto

Bill Karwin Points 204877

La distance entre chaque degré de latitude varie en raison de la forme de la terre et de la distance entre chaque degré de longitude devient plus petite que vous obtenez plus près des pôles. Donc, nous allons parler de l'équateur, où la distance entre chaque degré est 110.574 km de la latitude et de 111.320 km pour la longitude.

50ft est 0.01524 km, donc:

  • 0.01524 / 110.574 = 1/7255 de un degré de latitude
  • 0.01524 / 111.320 = 1/7304 d'un degré de longitude

Vous avez besoin de quatre chiffres de l'échelle, suffisamment pour descendre à dix-millièmes de degré, avec un total de sept chiffres de précision.

DECIMAL(7,4) devrait être beaucoup pour vos besoins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X