database - sgbd - sig sql server




Le moyen le plus efficace pour stocker des géolocalisations dans une base de données (4)

Une autre bonne technique consiste à multiplier les valeurs par une constante et à les stocker sous forme de valeurs entières. L'utilisation de nombres entiers uniquement peut également aider à accélérer les calculs.

À moins que vous ayez un besoin sérieux de précision, vous devriez seulement avoir besoin de stocker plus de 5 valeurs après la virgule.

Cette spécification de stockage de données Latitude Longitude donne un graphique qui montre la précision par rapport aux positions décimales.

# decmal places, example, precision
5    51.22135    ± 0.8 m
6   50.895132   ± 0.08 m

7 serait de 8mm, soit environ 0,314 pouces.

Je sais que postgres a un type de données pour stocker les coordonnées géographiques. Mais je suis à la recherche d'une solution agnostique RDBMS. Actuellement, j'utilise Decimal (25,20) dans MySQL. Il se peut que j'utilise ces données pour rechercher ces emplacements en fonction d'une distance donnée à partir d'un emplacement donné plus tard. Quelle serait la meilleure approche pour stocker ce type de données?


AFAIK, MS SQL Server 2008 prend en charge GeoLocations en tant que DataType. Je sais que vous utilisez MySQL, mais juste pensé que je le mentionnerais sur cette question.


La norme est ici . Bien que ce soit trop pour un cas d'utilisation simple comme le vôtre, cela peut vous donner quelques idées sur la raison pour laquelle il est préférable d'utiliser certains paquets OGC conformes à de nombreuses bases de données, même MySQL .

A défaut, et en supposant que vous implémenterez les algorithmes pour les calculs de distance, tout nombre à virgule flottante ayant la précision dont vous avez besoin fonctionnera.


Après la réponse de @ vfilby , pourquoi ne pas stocker les deux moitiés du nombre comme deux types int séparés?





geocoding