cquest / geocodage-spd

Scripts de géocodage et remise en forme des bases du Service Public de la Donnéee
GNU Affero General Public License v3.0
68 stars 19 forks source link

Problème avec le champ 'place' #3

Closed cpliso closed 7 years ago

cpliso commented 7 years ago

Bonjour Christian,

Avant tout merci pour le script, tout fonctionne à merveille jusqu'au moment ou je dois executer la commande

wc -l sirene_*.csv | sort -n -r | grep ...csv -o | sed 's/.csv//' | \ parallel -j 24 -t ./1b_sirenegeo.py sirene{}.csv > sirene_{}.csv.log

En effet cela géolocalise bien certaines entreprises mais pas toute et j'ai une erreur récurrente qui est

File "./1b_sirene_geo.py", line 248, in stats[source['properties']['type']]+=1 KeyError: 'place'

Auriez-vous une réponse à m'apporter ?

D'avance merci pour votre aide.

cpliso commented 7 years ago

J'ai pu régler cette erreur en rajoutant le champ place avec pour valeur 0 dans stats mais quid de l'utilité ? Ne vais-je pas avoir de soucis ?

Mon fichier geocodé sur le département 01 contiens donc 41 entreprises avant c'était 1 mais en revanche quand j'execute avec python 3.5 j'obtiens l'erreur suivante :

Traceback (most recent call last): File "./1b_sirene_geo.py", line 109, in ban = geocode(addok_ban, {'q': ligne4N, 'citycode': depcom, 'limit': '1'},'N') File "./1b_sirene_geo.py", line 20, in geocode j = json.loads(r.text) File "/usr/lib/python3.5/json/init.py", line 319, in loads return _default_decoder.decode(s) File "/usr/lib/python3.5/json/decoder.py", line 339, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python3.5/json/decoder.py", line 357, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Et donc mon fichier ne termine pas.

Ensuite j'ai tenté avec le python 3.4 j'ai l'erreur suivante :

Traceback (most recent call last): File "./1b_sirene_geo.py", line 109, in ban = geocode(addok_ban, {'q': ligne4N, 'citycode': depcom, 'limit': '1'},'N') File "./1b_sirene_geo.py", line 20, in geocode j = json.loads(r.text) File "/usr/lib/python3.4/json/init.py", line 318, in loads return _default_decoder.decode(s) File "/usr/lib/python3.4/json/decoder.py", line 343, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python3.4/json/decoder.py", line 361, in raw_decode raise ValueError(errmsg("Expecting value", s, err.value)) from None ValueError: Expecting value: line 1 column 1 (char 0)

En réalité c'est les deux même erreur, que faire face à cela ?

Surtout que quand je test en enlevant l'entreprise qui pose problème cela crash plus loin sur une autre, or en analysant la ligne je ne comprend pas d'où cela provient, de mon serveur ban bano peut être ?

Merci.

cquest commented 7 years ago

Bonjour

L'erreur semble intervenir dans la fonction geocode sur j = json.loads(r.text)

Ceci indique que le json retourné par l'API de géocodage est impossible à décoder. J'ai fait une correction à ce niveau (try/except), reprenez les dernières versions des scripts.

Vous pouvez aussi directement récupéré les données traitées... qui sont mises à jour chaque mois sur http://212.47.238.202/geo_sirene/