Quel est le type de données idéal pour stocker les valeurs de latitude et de longitude en Python? Prenons un stops.txt dans GTFS comme exemple,

stop_lat,stop_lon
48.82694828196076,2.367038433387592
48.82694828196076,2.367038433387592
48.829830695271106,2.376120009344837
48.829830695271106,2.376120009344837
48.83331371557845,2.387299704383512
48.83331371557845,2.387299704383512
48.840542782965464,2.3794094631230687
48.840542782965464,2.3794094631230687
48.844652150982945,2.37310814754528

Correspondant à Quel est le type de données idéal à utiliser lors du stockage de latitude / longitudes dans une base de données MySQL? et la réponse très appréciée est:

Utilisez les extensions spatiales de MySQL avec SIG.

0
SparkAndShine 7 mars 2016 à 13:45

4 réponses

Meilleure réponse

Je pense que namedtuple est la voie à suivre, facile d'accès par son nom , et utilisé comme tuple (pour le float de précision):

In[4]: from collections import namedtuple
In[5]: coords = namedtuple("Coords", ['x', 'y'])
In[6]: coords
Out[6]: __main__.Coords
In[7]: coords(1,2)
Out[7]: Coords(x=1, y=2)
In[8]: coords(1.235445,2.2345345)
Out[8]: Coords(x=1.235445, y=2.2345345)
In[9]: coords(1.2354451241234214,2.234534512412414134)
Out[9]: Coords(x=1.2354451241234214, y=2.2345345124124143)
2
Netwave 7 mars 2016 à 11:07

Vous avez demandé de stocker la latitude et la longitude et de juger par la quantité de données que vous allez stocker, je choisirais une liste de tuples de flotteurs:

data = [
    (48.82694828196076,2.367038433387592),
    (48.82694828196076,2.367038433387592)
]

Le tuple peut - bien sûr - être remplacé à tout moment par une liste. D'autant plus qu'il ne stocke que 2 flotteurs, son accès n'est pas si cher, vous ne remarquerez pas du tout la différence. Cela donnerait alors une liste imbriquée:

data = [
    [48.82694828196076,2.367038433387592],
    [48.82694828196076,2.367038433387592]
]
0
jhoepken 7 mars 2016 à 11:01

Vous pouvez définir FLOAT (N, D) où la valeur par défaut est (10,2) où 2 est le nombre de décimales et 10 est le nombre total de chiffres, y compris les décimales, les précisions décimales peuvent aller jusqu'à 24 places pour le float et 53 places pour le DOUBLE (DAKOTA DU NORD).

1
arun.rajput 7 mars 2016 à 11:03

Je suppose que vous avez besoin de 6 décimales. Ainsi, float contiendrait vos données. Ou décimal avec une précision réglée sur 6?

2
Alok Shenoy 7 mars 2016 à 10:50