En gardant à l'esprit que je vais effectuer des calculs sur les coordonnées lat / long paires, ce type de données est le mieux adapté pour une utilisation avec une base de données MySQL?
Réponses
Trop de publicités?Utilisation de MySQL spatiale des extensions avec le SIG.
MySQL Spatial Extensions sont la meilleure option parce que vous avez la liste complète de la répartition spatiale des opérateurs et des indices à votre disposition. Un index spatial vous permet d'effectuer à distance des calculs très rapidement. Veuillez garder à l'esprit qu'en tant que de 6.0, l'Extension Spatiale est encore incomplète. Je ne suis pas en arrêtant de MySQL Spatial, seulement vous permettant de connaître les pièges avant d'aller trop loin le long de cette.
Si vous avez affaire strictement avec des points et seulement la fonction de DISTANCE, c'est très bien. Si vous avez besoin de faire des calculs avec des Polygones, des Lignes, ou avec Tampon-Points de l'espace des opérateurs ne fournissent pas de résultats exacts, sauf si vous utilisez la "relation" opérateur. Voir l'avertissement en haut de 21.5.6. Les relations telles que la contient, à l'intérieur, ou de coupe sont à l'aide de la MBR, pas la géométrie exacte de la forme (c'est à dire une Ellipse est traité comme un Rectangle).
En outre, les distances dans MySQL Spatial sont dans les mêmes unités que votre première géométrie. Cela signifie que si vous utilisez les Degrés Décimaux, puis votre mesures de distance sont en Degrés Décimaux. Cela fera qu'il sera très difficile d'obtenir des résultats exacts que vous obtenez d'autres personnes de l'équateur.
Quand je l'ai fait pour une de navigation de la base de données construite à partir de ARINC424 j'ai fait pas mal de tests et en regardant le code, j'ai utilisé une VIRGULE(18,12) (en Fait un NUMÉRIQUE(18,12) parce que c'était firebird).
Des flotteurs et des doubles ne sont pas aussi précis et peut entraîner des erreurs d'arrondi qui peut être une très mauvaise chose. Je ne me souviens pas si j'ai trouvé les données réelles qui ont eu des problèmes - mais je suis assez certain que l'impossibilité de stocker de manière précise dans un float ou un double pourrait causer des problèmes
Le point est que lors de l'utilisation de degrés ou en radians nous savons de la gamme des valeurs - et la partie fractionnaire besoins de la plupart des chiffres.
Le MySQL Spatial Extensions sont une bonne alternative, parce qu'ils suivent L'OpenGIS Modèle de la Géométrie. Je n'ai pas les utiliser parce que j'ai besoin de garder ma base de données portable.
Basé sur cet article wiki http://en.wikipedia.org/wiki/Decimal_degrees#Accuracy le type de données approprié dans MySQL est Décimal(9,6) pour le stockage de la longitude et de la latitude dans séparer les champs.