Projet

Général

Profil

Bug #6933

champ "carte" et export JSON

Ajouté par Thomas Noël il y a environ 9 ans. Mis à jour il y a plus de 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
12 avril 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Pour le champ carte, la valeur est "lat;lon" avec lat et lon des décimaux.

Pour l'export JSON il serait plus intéressant d'avoir dictionnaire sous forme "geohash" tel que reconnu par ElasticSearch (et d'autres) :

  {
    "lat": ...,
    "lon": ...
  }


Fichiers

Révisions associées

Révision 4f790b48 (diff)
Ajouté par Thomas Noël il y a environ 9 ans

map: export json in a lat/lon dict (#6933)

Historique

#2

Mis à jour par Frédéric Péters il y a environ 9 ans

Ça ne doit pas être bien compliqué d'accompagner ce patch d'un test (cf ce qui se fait dans test_fields.py).

(il manque un espace devant 'lon').

#3

Mis à jour par Thomas Noël il y a environ 9 ans

Mes mauvaises habitudes ont la peau dure. Voici, avec l'espace et un peu de tests.

#4

Mis à jour par Frédéric Péters il y a environ 9 ans

Côté elasticsearch, ça semble bien vouloir avaler du "location" : "41.12,-71.34"; mais comme on a de toute façon un point virgule à la place de leur virgule, structurons, et là il faut sans doute que lat et lon soient des valeurs numériques, plutôt que des chaines, non ?

(je lis http://www.elastic.co/guide/en/elasticsearch/reference/1.3/mapping-geo-point-type.html )

#5

Mis à jour par Thomas Noël il y a environ 9 ans

Bien vrai.

Bon, en fait, j'ai faignanté dès que j'ai remarqué (empiriquement) que Elastic savait utiliser des chaines.

Pour le numérique, j'avais commencé, et je voulais passer par du Decimal, et je ne suis pas parvenu à sérialiser proprement un Decimal en JSON. Peut-être que float() est acceptable, mais ça m'a été une pensée désagréable.

Je préférerais quand même rester sur un json en dico "lat/lon", parce que c'est plus clair, on voit tout de suite qu'il s'agit de coordonnées géo, c'est généralement plus facile à traiter que faire un split, etc.

Donc, si on peut sérialiser la chose en dico JSON mais avec deux décimaux, ça me va très bien.

#6

Mis à jour par Thomas Noël il y a environ 9 ans

Frédéric Péters a écrit :

(je lis http://www.elastic.co/guide/en/elasticsearch/reference/1.3/mapping-geo-point-type.html )

(juste au cas où, on utilise la 1.5)

#7

Mis à jour par Frédéric Péters il y a environ 9 ans

Pour la gestion Decimal dans la sortie json, c'est comme pour le date/heure, il va falloir l'ajouter à qommon.misc.JSONEncoder.

Mais je pense float() acceptable pour l'usage, la seule question qu'il me restait concernait les résultats pour les comparaisons dans les tests, mais des tests sur le côté me disent que ça passerait.

#8

Mis à jour par Thomas Noël il y a environ 9 ans

Ouaich, allez, ça ira tant qu'on ne géolocalise pas au micromètre près ;)

#9

Mis à jour par Frédéric Péters il y a environ 9 ans

  • Statut changé de Nouveau à Résolu (à déployer)

Voilà, poussé.

commit 4f790b48a03b7603c4fa1a0e638f1e11395b85b6
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Sun Apr 12 16:34:49 2015 +0200

    map: export json in a lat/lon dict (#6933)
#10

Mis à jour par Benjamin Dauvergne il y a environ 9 ans

La bonne manière de définir la précision d'un Decimal c'est d'utiliser
quantize() avec éventuellement un mode d'arrondi précisé dans le
context. Pour obtenir 2 décimales il faut par exemple:

str(valeur_decimale.quantize(decimal.Decimal('0.01')))

Si on utilise le formatage des flottant, on a je pense un cast implicite
et toutes sortes de saletés s'ensuivent.

#11

Mis à jour par Thomas Noël il y a environ 9 ans

Sur cette idée, suite du patch, avec une "astuce" soufflée par Benjamin : un export JSON qui gère les Decimal (en faisant croire à un float mais en fait non)

#12

Mis à jour par Benjamin Dauvergne il y a environ 9 ans

output decimals with a fixed precision

Je ne vois pas bien où la précision est fixé dans le patch.

#13

Mis à jour par Thomas Noël il y a environ 9 ans

Benjamin Dauvergne a écrit :

Je ne vois pas bien où la précision est fixé dans le patch.

Je voulais dire, en anglais, "export avec la précision fixée dans le Decimal", autre traduction accueillie avec bienveillance ;)

#14

Mis à jour par Thomas Noël il y a environ 9 ans

Et dernier patch donc, l'utilisation de Decimal dans le champ Map.

#15

Mis à jour par Thomas Noël il y a environ 9 ans

Thomas Noël a écrit :

Et dernier patch donc, l'utilisation de Decimal dans le champ Map.

Avec le fichier joint, désolé.

#16

Mis à jour par Frédéric Péters il y a environ 9 ans

  • Statut changé de En cours à Résolu (à déployer)

Je trouve plutôt moche d'ajouter ce qui est clairement identifié comme un hack alors qu'on peut très bien être en float d'après moi; je vais fermer ce ticket mais si jamais tu veux le pousser, vas-y quand même.

#17

Mis à jour par Benjamin Dauvergne il y a environ 9 ans

Je n'avais pas vu que ça concernait des latitudes/longitudes dans ce cas effectivement ça ne sert à rien.

#18

Mis à jour par Thomas Noël il y a plus de 8 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF