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.
4 réponses
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)
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]
]
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).
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?
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.